当前位置: 首页 > 知识库问答 >
问题:

如何上传文件到谷歌存储多块?

许阿苏
2023-03-14

我正在尝试上传文件到谷歌存储在多块但签名的URL。

以下是我正在执行的步骤:

  1. 使用node.js创建可恢复的上载URL

示例URL:https://www.googleapis.com/upload/storage/v1/b/mybucket/o?name=sdk2.txt&uploadtype=resumable&upload_id=aenb2urmfy9ckwkhfxsydt71lcwa0zuvjg6iyfr9mhiwsiag3c1gofivurupz6kftihtywndse00xaokh7ftxpf82s7bnvrhpg

发布https://www.googleapis.com/upload/storage/v1/b/mybucket/o?name=sdk2.txt&uploadtype=resumable&upload_id=aenb2urmfy9ckwkhfxsydt71lcwa

使用这些标头:

Content-Type:text/plain
name:sdk2.txt
Content-Length:0
x-goog-resumable:start

HTTPS响应:200确定

put https://www.googleapis.com/upload/storage/v1/b/mybucket/o?name=sdk2.txt&uploadtype=resumable&upload_id=aenb2urmfy9ckwkhfxsydt71lcwa0zuvjg6iyfr9mhiwsiag3c1gofivurupz6kftihtywndse00xaokh7ftxpf82s7bnvrhpg

使用这些标头:

Content-Type:text/plain
name:sdk2.txt
Content-Length: 262144
Content-Range: bytes 0-262143/331886 

HTTPS响应:200 OK包含数据:

 {
  "kind": "storage#object",
  "id": "MYBUCKET/sdk2.txt/1490608714382301",
  "selfLink": "https://www.googleapis.com/storage/v1/b/testupload-sdk/o/sdk2.txt",
  "name": "sdk2.txt",
  "bucket": "MYBUCKET",
  "generation": "1490608714382301",
  "metageneration": "1",
  "timeCreated": "2017-03-27T09:58:34.164Z",
  "updated": "2017-03-27T09:58:34.164Z",
  "storageClass": "MULTI_REGIONAL",
  "timeStorageClassUpdated": "2017-03-27T09:58:34.164Z",
  "size": "0",
  "md5Hash": "1B2M2Y8AsgTpgAmY7PhCfg==",
  "mediaLink": "https://www.googleapis.com/download/storage/v1/b/MYBUCKET/o/sdk2.txt?generation=1490608714382301&alt=media",
  "crc32c": "AAAAAA==",
  "etag": "CN33rZe29tICEAE="
}

根据文档,上述响应应该是308,而不是200 OK

我对这些API调用做错了什么?

共有1个答案

景正文
2023-03-14

步骤2不是必需的。如果将步骤2替换为步骤3,则响应将按预期返回308而不是200

x-goog-resumable仅适用于XML API,因此在使用JSON API时应该省略它。

在步骤1中,初始化了可恢复的上载。GCS在初始化上载时生成上载ID,因此在初始化上载之前不可能有上载ID。

由于GCS将其解释为要上载的数据(由于步骤1初始化了上载),因此步骤2最终完成了使用0字节对象的可恢复上载。结果,步骤3返回了来自步骤2的响应。如果可恢复上载已完成,则GCS将从创建对象的请求返回响应。

 类似资料:
  • 我目前面临的问题与谷歌云存储, 我能够下载对象上传到谷歌云存储,但当天晚些时候,我开始得到的错误,因为"这个网站无法到达" 我在c#中以编程方式创建了一个bucket,代码如下: 因此,创建存储桶的设置如下: 默认存储类别:多地区 位置:美国(美国多个地区) 公共访问:每个对象 生命周期:无 访问控制模型:存储桶策略

  • 我想按照官方文档中提供的示例将一个文件上传到Google云存储 然而,我得到了一个错误: 线程“main”com.google.cloud.storage.StorageException中的异常:获取服务帐户的访问令牌时出错:400个错误请求{“错误”:“无效的授予”、“错误描述”:“无效的JWT:令牌必须是短期令牌(60分钟)并且在合理的时间范围内。请检查JWT声明中的iat和exp值。”位于

  • 我正在寻找将文件上传到存储桶的 。这是因为我有一个匿名用户,某种程度上是一个公开的API密钥。稍后我将实现每个用户的ACL,但现在我只需要它来工作/上传。 现在,我在Amazon Cloud上也做了类似的工作,有一个简单的基于jQuery的小部件,可以上传文件,我只需要输入它们的和bucket名称(很遗憾,这是在中)。 只要一个简单的

  • 我正在尝试使用谷歌云存储JSON API将图像上传到谷歌云存储桶中。文件正在上载,但没有显示任何内容。 我正在通过以下方式上载图像:- 图像1 看图片1,文件上传成功。但当我点击它查看它时,它显示如图2所示。 图像2

  • 我应该做什么才能成功上传图片?任何帮助都将不胜感激。 非常感谢。