首页 > 解决方案 > 上传大块谷歌驱动器文件错误

问题描述

我试图将大文件上传到谷歌驱动器。为了节省内存,我使用 Google 的媒体文件上传分块添加文件。

文件上传正常但是我收到来自 PHP 的警告( Warning: rawurldecode() expects parameter 1 to be string, object given )

我已经在下面发布了我的代码,以防我有任何错误:

$file3 = new Google_Service_Drive_DriveFile();

  $file3->setName($zipName3 . '.zip');
  $file3->setDescription('Testing document ZIP backups');
  $file3->setMimeType('application/zip');
  $chunkSizeBytes = 1 * 1024 * 1024;
  $client->setDefer(true);
  $request = $service->files->create($file3);

  $media = new Google_Http_MediaFileUpload($client, $request, 'application/zip', null,true,$chunkSizeBytes);
  $media->setFileSize(filesize($zipPath3));

  $result = $service->files->create($file3, array('mediaUpload' => $media));
  $status = false;
  $handle = fopen($zipPath3, "rb");
  while (!$status && !feof($handle)) {
     $chunk = fread($handle, $chunkSizeBytes);
     $status = $media->nextChunk($chunk);
  }
  $result = false;
  if($status != false) {
  $result = $status;
  }
  fclose($handle);

  print_r($result);

标签: phpgoogle-drive-api

解决方案


似乎已经解决了问题:

$file3 = new Google_Service_Drive_DriveFile();

  $file3->setName($zipName3 . '.zip');
  $file3->setDescription('Testing document ZIP backups');
  $file3->setMimeType('application/zip');
  $chunkSizeBytes = 1 * 1024 * 1024;
  $client->setDefer(true);
  $request = $service->files->create($file3);

  $media = new Google_Http_MediaFileUpload($client, $request, 'application/zip', null,true,$chunkSizeBytes);
  $media->setFileSize(filesize($zipPath3));

  **$result = $service->files->create($file3, array('mediaUpload' => $media));**
  $status = false;
  $handle = fopen($zipPath3, "rb");
  while (!$status && !feof($handle)) {
     $chunk = fread($handle, $chunkSizeBytes);
     $status = $media->nextChunk($chunk);
  }
  $result = false;
  if($status != false) {
  $result = $status;
  }
  fclose($handle);

  print_r($result);

罪魁祸首:

$result = $service->files->create($file3, array('mediaUpload' => $media));

不知道为什么我在创建文件时传递了 $media 对象,但删除它解决了问题:

$result = $service->files->create($file3);

推荐阅读