上传大块Google驱动器文件错误

时间:2018-10-24 11:18:05

标签: php google-drive-api

我正在尝试将大文件上传到Google驱动器。为了保留内存,我使用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);

1 个答案:

答案 0 :(得分:0)

似乎已解决问题:

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