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

Я новичок в PHP, и я использую API-интерфейс Google Drive PHP.

Это мой код:

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);]

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

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

2 ответа

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


Привет. Возможно, этот код поможет людям с использованием 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();
}
}

licensed under cc by-sa 3.0 with attribution.