我目前正在使用putObject
将文件上传到S3存储桶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)
,但这似乎会返回以下错误:
'req.abort is not a function. (In 're.abort()', 'req.abort' is undefined)'
这是真的'req'
在其对象中似乎没有abort()
函数,所以我想知道这是否仅仅与旧版本的AWS SDK相关联。如果是这样,处理这个问题的正确方法是什么?我已经在亚马逊的网站上阅读了一些名为 abortMultipartUpload 的方法的文档,但这种方法需要 UploadId ,我无法想象如何从我的{{1}中检索这个功能。如何在putObject
回调之前检索UploadID
的回复?
感谢您的帮助!
- 迈克尔
答案 0 :(得分:0)
S3 PUTObject API不是多部分请求。使用abortMultipartUpload
启动多部分请求时,completeMultipartUpload
或createMultipartUpload
是必需的,或者可以使用createMultipartUpload
或uploadId
。 createMultipartUpload
API的响应返回upload
值。
createMultipartUpload(params = {},callback)⇒AWS.Request启动a 分段上传并返回上传ID。注意:启动后 分段上传和上传一个或多个部分,您必须要么 完成或中止分段上传以停止收费 用于存储上传的部分。
多部分上传步骤:
1)多部分上传启动 - API uploadPart
2)部件上传 - API为abortMultipartUpload
或completeMultipartUpload
3)多部分上传完成(或中止) - API sys.path.insert(0, os.path.abspath(os.path.join(os.path.dirname(__file__), '..')))
或{{1}}