如何使用php将谷歌驱动下载文件写入目录

我正在尝试使用下面的代码将谷歌驱动器文件下载到目录。当我运行代码时,它只按照下面的代码在浏览器上打开文件的内容


// 验证谷歌驱动器到这里


$file = $service->files->get($fileId);



  $downloadUrl = $file->getDownloadUrl();

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

    $httpRequest = $service->getClient()->getAuth()->authenticatedRequest($request);

   echo $content= $httpRequest->getResponseBody();

这是我如何尝试将其下载到名为目标的目录


// 打开文件句柄输出。


$content = $service->files->get($fileId, array("alt" => "media"));


// Open file handle for output.


$handle = fopen("/download", "w+");


// Until we have reached the EOF, read 1024 bytes at a time and write to the output file handle.


while (!$content->eof()) {

        fwrite($handle, $content->read(1024));

}


fclose($handle);

echo "success";

这是我得到的错误


致命错误:未捕获的错误:调用 C:\xampp\htdocs\download.php 中字符串的成员函数 eof()


慕码人8056858
浏览 149回答 1
1回答

UYOU

您想使用 google/apiclient 和 php 将文件从 Google Drive 下载到特定目录。您要下载的文件是您的和/或与您共享的。如果我的理解是正确的,这个修改怎么样?修改点:请getBody()用于$content.$content->getBody()->eof()$content->getBody()->read(1024)修改后的脚本:在此修改中,Drive API 也检索文件名并用于保存下载的文件。如果您不想使用它,请删除它的脚本。$fileId = "###"; // Please set the file ID.// Retrieve filename.$file = $service->files->get($fileId);$fileName = $file->getName();// Download a file.$content = $service->files->get($fileId, array("alt" => "media"));$handle = fopen("./download/".$fileName, "w+"); // Modifiedwhile (!$content->getBody()->eof()) { // Modified    fwrite($handle, $content->getBody()->read(1024)); // Modified}fclose($handle);echo "success";在上面的脚本中,下载的文件被保存到./download/.笔记:当Drive API的Files: get方法时,可以下载除Google Docs(Google Spreadsheet、Google Document、Google Slides等)以外的文件。如果您要下载 Google Docs,请使用 Files:export 的方法。请注意这一点。所以在上面修改过的脚本中,它假设您正在尝试下载除 Google Docs 之外的文件。
打开App,查看更多内容
随时随地看视频慕课网APP