如何启动谷歌云存储断点续传?

Raf*_*ros 2 python google-app-engine google-cloud-storage

我正在尝试在后端创建一个 GCS 可恢复上传 url,将其发送到前端以获取 javascript 以启动大文件直接上传到存储桶。

\n

目前我的问题是我不知道如何开始上传。

\n

所有文档都没有任何代码,所以我没有任何依据。

\n

目前我的代码是这样的:

\n
def start_resumable_upload(self):\n    API_ENDPOINT = (\n        \'https://www.googleapis.com/upload/storage/v1beta2/\'\n        \'b%(bucket)s/o?uploadType=resumable&name=%(object_name)s\'\n    )\n    url_params = {\n        \'bucket\': BUCKET,\n        \'object_name\': self.filename\n    }\n    headers = {\n        \'X-Upload-Content-Type\': self.content_type,\n        \'X-Upload-Content-Length\': 0,\n        \'Content-Type\': \'application/json\'\n    }\n    r = urlfetch.fetch(\n        url=API_ENDPOINT % url_params,\n        method=urlfetch.POST,\n        headers=headers\n    )\n    return r.content\n
Run Code Online (Sandbox Code Playgroud)\n

start_resumable_upload 是我创建的文件模型中的一个方法,用于跟踪数据库上的元数据,因此, self.filename 将具有文件名, content_type 将是 mime 类型等。

\n

该请求的响应是:\n

400。 \xe2\x80\x99 是一个错误。\n

您的客户发出了格式错误或非法的请求。这\xe2\x80\x99就是我们所知道的一切。

\n

这有点令人无法接受。

\n

任何帮助表示赞赏。

\n

Bri*_*sey 5

示例应用程序包含一个使用google-api-python-client在 Python 中执行可恢复上传的示例。

关键设置是:

media = MediaFileUpload(filename, chunksize=CHUNKSIZE, resumable=True)
if not media.mimetype():
    media = MediaFileUpload(filename, DEFAULT_MIMETYPE, resumable=True)
request = service.objects().insert(bucket=bucket_name, name=object_name,
                                 media_body=media)
Run Code Online (Sandbox Code Playgroud)