Php 谷歌云存储-上传大文件(4GB)

Php 谷歌云存储-上传大文件(4GB),php,google-cloud-platform,google-cloud-storage,Php,Google Cloud Platform,Google Cloud Storage,我有以下脚本,可用于小文件,但在尝试大文件(4GB)时失败: 你知道如何上传一个大文件吗 我还尝试了getResumableUploader(): 当导航到resume URI时,它会返回“Method Not Allowed”我还没有使用这个API,但我认为您不应该只是将一个大文件打开到内存中,然后将其填充到这个请求中。您请求的是一个可恢复的操作,所以一次读取文件的一小部分,比如几MB,然后循环浏览,直到您上传了文件的所有部分 一个突出的问题可能是所选择的20万块大小。根据文档,chunkS

我有以下脚本,可用于小文件,但在尝试大文件(4GB)时失败:

你知道如何上传一个大文件吗

我还尝试了getResumableUploader():


当导航到resume URI时,它会返回“Method Not Allowed”

我还没有使用这个API,但我认为您不应该只是将一个大文件打开到内存中,然后将其填充到这个请求中。您请求的是一个可恢复的操作,所以一次读取文件的一小部分,比如几MB,然后循环浏览,直到您上传了文件的所有部分

一个突出的问题可能是所选择的20万块大小。根据文档,chunkSize必须以262144的倍数提供


另外,在处理大文件时,我强烈建议使用。它将帮助您更好地控制上传过程,您会发现它更可靠:)。我共享的链接中有一个代码片段可以帮助您入门。

你好,David,我已尝试getResumableUploader(),并得到以下响应:
致命错误:未捕获异常“Google\Cloud\Core\exception\GoogleException”,消息“上载失败”。请使用此URI恢复您的上载:https://www.googleapis.com/upload/storage/v1/b/jobsystem/o?uploadType=resumable&upload_id=AEnB2UpSE4ZNrO3qk06BgmFVOUUXlbEPgTxO84DCGOlTspm4Mg-465htc5aPbHtYK89Qbavkgz_6Nhfe1-_AG2iDQhRobklG0Q'在C:\wamp64\www\google cloud php\Storage\vendor\google\cloud core\src\Upload\ResumableUploader.php在线170
链接返回方法不允许,有什么想法吗?谢谢你把chunkSize设置为262144的时候还有问题吗?文档里哪里说它必须是262144@davids的倍数?我找不到它。我使用了很多不同的块大小,它们不是倍数,也没有发现任何问题。示例项目-
<?php

  require 'vendor/autoload.php';

  use Google\Cloud\Storage\StorageClient;

  $storage = new StorageClient([
      'keyFilePath' => 'keyfile.json',
      'projectId' => 'storage-123456'
  ]);

  $bucket = $storage->bucket('my-bucket');

  $options = [
      'resumable' => true,
        'chunkSize' => 200000,
        'predefinedAcl' => 'publicRead'
  ];

  // Upload a file to the bucket.
  $bucket->upload(
      fopen('data/file.imgc', 'r'),
      $options
  );

?>
Fatal error: Uncaught exception 'Google\Cloud\Core\Exception\GoogleException' with message 'Upload failed. Please use this URI to resume your upload:
$uploader = $bucket->getResumableUploader(fopen('data/file.imgc', 'r'), [
  'name' => 'file.imgc'
]);

try {
  $object = $uploader->upload();
} catch (GoogleException $ex) {
  $resumeUri = $uploader->getResumeUri();
  $object = $uploader->resume($resumeUri);
}