Диалоговое окно загрузки файла httpRequest API Google Drive

Я новичок в PHP, и я использую Google Drive PHP API.

Это мой код:

function downloadFile1($service,$downloadUrl,$client) {

if ($downloadUrl) {
$request = new Google_Http_Request($downloadUrl, 'GET', null, null);

$SignhttpRequest = $client->getAuth()->sign($request);
$httpRequest = $client->getIo()->makeRequest($SignhttpRequest);

if ($httpRequest->getResponseHttpCode() == 200) {

return $httpRequest->getResponseBody();

} else {
// An error occurred.
return null;
}
} else {
// The file doesn't have any content stored on Drive.
return null;
}
}

Все идет нормально. Но я хочу получить диалоговое окно для сохранения файла на моем компьютере (когда я получу результат возврата). Как я мог получить это?

[Если я выполню

$content = $httpRequest->getResponseBody();
print_r($content);]

Я вижу содержимое файла на веб-странице, но хочу его скачать!]

Заранее спасибо!

0

Решение

Вместо использования PHP для загрузки файла на сервер, покажите пользователю привязку на странице, которая указывает на файл webContentLink. При нажатии на ссылку файл будет загружен на компьютер пользователя.

0

Другие решения

Привет всем! Может быть, этот код поможет людям использовать google drive в качестве службы, которую можно использовать с cronjob / cli для загрузки, удаления и загрузки файлов с неограниченным размером файла.

Это еще не закончено, но это оболочка Google apiclient.
И может быть использован для загрузки, скачивания и удаления файлов.

<?php

namespace App\Model\Google;

class Drive
{
public $pixie;

protected $_config;
protected $_client;
protected $_service;

public function __construct(\App\Pixie $pixie)
{
$this->pixie = $pixie;
$this->_config = $this->pixie->config->get('googledrive');

$this->_client = new \Google_Client();
$this->_client->setClientId($this->_config['clientId']);
$this->_client->setClientSecret($this->_config['clientSecret']);
$this->_client->setRedirectUri($this->_config['redirectUri']); //
$this->_client->addScope($this->_config['scope']); // scope: https://www.googleapis.com/auth/drive
$this->_client->setAccessType($this->_config['accessType']); // offline
$token = $this->_client->refreshToken($this->_config['refreshToken']);

$this->_service = new \Google_Service_Drive($this->_client);
}

/**
* UPLOAD FILE
*/
public function uploadFile($filename, $file)
{
$gdriveFile = new \Google_Service_Drive_DriveFile();
$gdriveFile->title = $filename;

$chunkSizeBytes = 1 * 1024 * 1024;

// Call the API with the media upload, defer so it doesn't immediately return.
$this->_client->setDefer(true);
$request = $this->_service->files->insert($gdriveFile);
$mimeType = 'text/plain';
// Create a media file upload to represent our upload process.
$media = new \Google_Http_MediaFileUpload(
$this->_client,
$request,
$mimeType,
null,
true,
$chunkSizeBytes
);

$media->setFileSize(filesize($file));

// Upload the various chunks. $status will be false until the process is
// complete.
$status = false;
$handle = fopen($file, "rb");
while (!$status && !feof($handle)) {
$chunk = fread($handle, $chunkSizeBytes);
$status = $media->nextChunk($chunk);
}

// The final value of $status will be the data from the API for the object
// that has been uploaded.
$result = false;
if ($status !== false) {
$result = $status;
}

return $result;
}

/**
* DOWNLOAD FILE
*/
public function downloadUrl($fileId)
{
$file = $this->getFile($fileId);

if ($url = $file->getWebContentLink()) {
return $url;
}

return false;
}

/**
* GET FILE
*   $file = $service->files->get($fileId);
*/
public function getFile($fileId)
{
try {
return $this->_service->files->get($fileId);
} catch(\Exception $e) {
throw new \Exception('Google Drive File Does Not Exist');
}
}

/**
* DELETE FILE
*   $service->files->delete($fileId);
*/
public function deleteFile($fileId)
{
new \Debug();
}

/**
* FILE TO TRASH
*   $service->files->trash($fileId);
*/
public function trashFile($fileId)
{
new \Debug();
}

/**
* EMPTY TRASH
*   $service->files->emptyTrash();
*/
public function emptyTrash()
{
new \Debug();
}

/**
* FILE UNTRASH
*   $service->files->untrash($fileId);
*/
public function untrashFile($fileId)
{
new \Debug();
}

/**
* LIST OF FILES
*   $list = $service->files->listFiles();
*/
public function listOfFiles()
{
new \Debug();
}
}
-1

По вопросам рекламы [email protected]