我正在使用 2018 版 Google Photos API 来上传图像和媒体,如下所述:“上传字节 https://developers.google.com/photos/library/guides/upload-media#uploading-bytes"
当我上传一个new图像或视频我从未在响应正文中获得上传令牌。它始终是一个空正文,根据上面的链接,这意味着字节已经上传(但这是一个新上传)。
这是请求/响应的示例:
request:
POST https://photoslibrary.googleapis.com/v1/uploads
request headers:
authorization: Bearer abcd1234
X-Goog-Upload-Protocol: raw
X-Goog-Upload-File-Name: 20140317T082917_001.jpg
content-type: application/octet-stream
content-length: 1292868
accept: application/json
-----------------------------------------------------
response: OK [200]
response headers:
Alt-Svc: [quic=":443"; ma=2592000; v="44,43,39,35"]
Server: [UploadServer]
X-GUploader-UploadID: [AEnB2UqT6y8KyZNCPyAaFeCj7I_ABIlwLJQMpltYzQ7D8blW4v3uKSlMT7dbNjFV0i_7ApzoR-i26ZtZ9kHkB7bI8n8ojgOnNA]
Content-Length: [510]
Date: [Sun, 05 Aug 2018 11:19:15 GMT]
Content-Type: [text/plain]
response body:
null
我也尝试过使用返回的值X-GUploader-UploadID
标头,但这会导致500
error.
有人可以提供一个如何将字节上传到 Google Photos API 的工作示例吗?
谢谢你!
我认为您只是没有查看响应内容。以下代码适用于 Python,当然您也可以使其适用于 Java:
def upload_files(self, filepath, album_id):
filename = os.path.basename(filepath)
url = 'https://photoslibrary.googleapis.com/v1/uploads'
authorization = 'Bearer ' + creds.access_token
headers = {
"Authorization": authorization,
'Content-type': 'application/octet-stream',
'X-Goog-Upload-File-Name': filename,
'X-Goog-Upload-Protocol': 'raw',
}
with open(filepath, "rb") as image_file:
response = requests.post(url, headers=headers, data=image_file)
assert response.status_code == 200
token = response.text # !!!
return service.mediaItems().batchCreate(body=dict(
albumId=album_id,
newMediaItems=[
{"simpleMediaItem": {"uploadToken": token}}]
)).execute()
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)