Raf*_*ros 2 python google-app-engine google-cloud-storage
我正在尝试在后端创建一个 GCS 可恢复上传 url,将其发送到前端以获取 javascript 以启动大文件直接上传到存储桶。
\n目前我的问题是我不知道如何开始上传。
\n所有文档都没有任何代码,所以我没有任何依据。
\n目前我的代码是这样的:
\ndef 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\nRun Code Online (Sandbox Code Playgroud)\nstart_resumable_upload 是我创建的文件模型中的一个方法,用于跟踪数据库上的元数据,因此, self.filename 将具有文件名, content_type 将是 mime 类型等。
\n该请求的响应是:\n
400。 \xe2\x80\x99 是一个错误。\n
您的客户发出了格式错误或非法的请求。这\xe2\x80\x99就是我们所知道的一切。
\n这有点令人无法接受。
\n任何帮助表示赞赏。
\n此示例应用程序包含一个使用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)