2017-09-12 217 views
1

我目前正在將文件上傳到使用putObjectAWS S3 SDK:中止putObject上傳進度

params = { 
    Key: videoKey, 
    ContentType: file.type, 
    Body: file, 
    ACL: "public-read" 
}; 

req = s3.putObject(params).on('httpUploadProgress', function(evt) { 
    // calculate percentage complete 
    var percentComplete = Math.round(evt.loaded/evt.total * 100); 

    $cancelBtn.on("click", function(evt) { 
     req.abort.bind(req); // doesn't work; returns an error 
    }); 
}).send(function(err, data) { 
    // code to handle what happens after upload completes 
}); 

我讀過的多個位置使用req.abort()req.abort.bind(req)的S3存儲桶,但這似乎是返回以下錯誤:

'req.abort is not a function. (In 're.abort()', 'req.abort' is undefined)' 

這是真的'req'似乎並不在其對象的abort()功能,因此,如果這僅僅是依賴於舊版本的SDK AWS的我不知道。如果是這樣,處理這個問題的正確方法是什麼?我已經閱讀了亞馬遜網站上的一些文檔,其中有一種方法叫做abortMultipartUpload,但是這種方法需要UploadId,我不知道如何從我的putObject函數中檢索這個方法。如何在'send'回撥之前檢索UploadID的回覆?

感謝您的幫助!

-Michael

回答

0

的S3 PUTObject API是不是一個多部分請求。 abortMultipartUploadcompleteMultipartUpload是必需的或可在您使用createMultipartUpload啓動多部分請求時使用。 createMultipartUpload API的響應返回uploadId值。

createMultipartUpload(params = {}, callback) ⇒ AWS.Request Initiates a multipart upload and returns an upload ID.Note: After you initiate multipart upload and upload one or more parts, you must either complete or abort multipart upload in order to stop getting charged for storage of the uploaded parts.

多部分上傳步驟: -

1)多部分上傳起始 - API createMultipartUpload

2)零件上傳 - API是uploaduploadPart

3)多部分上傳完成(或中止) - API abortMultipartUploadcompleteMultipartUpload