为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

PHP
慕码人8056858 2021-11-19 16:26:06
我正在尝试使用下面的代码将谷歌驱动器文件下载到目录。当我运行代码时,它只按照下面的代码在浏览器上打开文件的内容// 验证谷歌驱动器到这里$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()
查看完整描述

1 回答

?
UYOU

TA贡献1878条经验 获得超4个赞

您想使用 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+"); // Modified

while (!$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 之外的文件。


查看完整回答
反对 回复 2021-11-19
  • 1 回答
  • 0 关注
  • 148 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信