因此,我試圖上傳文件到谷歌雲存儲使用分段上傳,事先打破文件分塊,並通過http放置請求發送它。谷歌雲存儲分段上傳,最後一個塊失敗(503)
問題是,當我上傳文件的最後一個塊時,出現503錯誤,而不是200個完整的消息。
爲了簡單起見,我使用從驅動器中的JPEG圖像,轉換成團塊,然後字節:
var data = DriveApp.getFileById(DriveImageFileId).getBlob().getBytes();
繼文檔,我首先請求可重複的上傳URI。
var accessToken = OAuth2.0_Access_Token;
var header = {'X-Upload-Content-Type' : 'image/jpeg'}
var body = {"name": "filename.jpeg"}
var options = {
'method':'post',
'contentType':'application/json',
'oAuthUseToken':'never', // Disables OAuth1.0 config
'muteHttpExceptions':true,
'headers':header,
'contentLength': 582381,
'payload':JSON.stringify(body)
};
var response = UrlFetchApp.fetch('https://www.googleapis.com/upload/storage/v1beta2/b/myCloudStoreBucket/o?uploadType=resumable&access_token='+accessToken,options).getHeaders();
var uploadUrl = response.Location
這工作正常。
我開始將文件字節解析爲256x1024字節的塊,並使用上傳URL通過http使用PUT進行上傳。這不是一個問題,因爲每次我上傳一個塊時,我都會得到一個308響應,並帶有預期的上傳字節數。我可以以256x1024的倍數多次執行此操作,將整個文件上傳至最後一個塊。
這裏是UrlFetchApp選項和頭部上的最後一塊,例如:
var options = {
"method": "put",
"contentType": "image/jpeg",
"contentLength": 58093,
"oAuthUseToken": "never",
"muteHttpExceptions": true,
"headers": {
"Content-Range": "bytes 524287-582380/582381"
},
"payload" : <dataBytes>
}
var response = UrlFetchApp.fetch(resumeUrl,options);
哪個返回如下:
Response Type: 503
Response Header:
{
"Date": "Wed, 16 Apr 2014 06:08:43 GMT",
"Content-Length": "0",
"Alternate-Protocol": "443:quic",
"Content-Type": "text/html; charset=UTF-8",
"Server": "HTTP Upload Server Built on Apr 7 2014 11:59:06 (1396897146)"
}
No Response body or error message.
的反應應該是200文件上傳完畢。我究竟做錯了什麼?
我在這裏看到了類似的問題,但我已經成功上傳了塊。最後的塊仍然是一個問題:http:// stackoverflow。COM /問題/ 20945286 /上傳功能於塊到谷歌雲存儲錯誤-OUT-503-服務不可用 – Jabberwockey