【问题标题】:Google drive php get file name before download谷歌驱动器php在下载前获取文件名
【发布时间】:2021-05-22 18:40:45
【问题描述】:

我正在从谷歌驱动器下载图像文件,有些是 png、jpeg 或 gif 文件。这些文件是通过谷歌表单上传的,然后我通过谷歌表单响应中的 url 获取文件 ID。 我想获得原始名称或其扩展名。 目前正在使用以下有效的代码

   $response = $service->files->get($file_id, array(
                'alt' => 'media')); //service is the google drive service. file id is drive file id
   $upload_file_url = "/uploads/" . time() . "_image.jpg"; //assigning the file as .jpg 
          
  $outHandle = fopen("myFolder/" . $upload_file_url, "w+");

  while (!$response->getBody()->eof()) {
                fwrite($outHandle, $response->getBody()->read(1024));
   }
  fclose($outHandle);

以上工作,但有些图像不是 jpg。是否可以获取 $response 文件名或文件扩展名来处理非 jpg 文件并使用正确的扩展名/s 保存它们

【问题讨论】:

  • 我知道这有点无关紧要,但我有一个客户在共享所有文件夹的谷歌驱动器帐户中上传图像。我怎么能像你在你的问题中那样得到这些图像?在执行您提到的代码之前,您能给我一个提示吗?什么是 $service,有什么帮助吗?谢谢
  • $service 是谷歌驱动服务。请参阅以下 github gist 和完整代码:gist.github.com/Geowan/05aebffd66505a1f7701541173d9bfa6

标签: php google-drive-api


【解决方案1】:

Files.get()用于通过文件id获取文件的元数据或内容。

  • 如果请求中的alt=media URL 参数不包含Files.get() 将返回一个Files Resource,其中包括文件名和文件类型/mime 类型。

  • 如果alt=media URL参数在请求中包含Files.get()会返回文件内容

注意:

如果您没有在请求中设置fields 可选查询参数,则响应会包含一组特定于此方法的默认 字段。检查 API 资源管理器时默认包括以下内容:kindidnamemimeType

示例代码:

$file = $service->files->get($file_id); 
print "File Name: " . $file->getName();
print "Description: " . $file->getDescription();
print "MIME type: " . $file->getMimeType();

$response = $service->files->get($file_id, array(
                'alt' => 'media'));

您可以使用以下方法检查 mimeType 以确定文件是 jpg、png 还是 gif:

  • JPEG MimeType = "图像/jpeg"

  • PNG MimeType = "图像/png"

  • GIF MimeType = "图像/gif"


参考:

【讨论】:

  • 通过使用这个我得到一个错误调用未定义的方法 GuzzleHttp\Psr7\Response::getMimeType()。这一定与google drive api完成的guzzle http请求有关。
  • 您能否更新您的工作代码,以便我进行可视化。
  • 文件extractor.php 有$service 代码,而google drive 类在php 中初始化google drive。我还将我的 composer.json 包含在与谷歌驱动器相关的部分中。
  • 我的意思是您如何将建议的解决方案合并到您的工作代码中?我没有看到您获取导致错误的文件元数据的过程
猜你喜欢
  • 1970-01-01
  • 2017-11-27
  • 1970-01-01
  • 1970-01-01
  • 2020-08-03
  • 2019-08-18
  • 2021-04-05
  • 2018-07-21
  • 1970-01-01
相关资源
最近更新 更多