AWS S3 SDK:中止正在进行的 putObject 上传
Posted
技术标签:
【中文标题】AWS S3 SDK:中止正在进行的 putObject 上传【英文标题】:AWS S3 SDK: Abort a putObject upload in progress 【发布时间】:2017-09-12 16:27:08 【问题描述】:我目前正在使用 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 开发工具包相关联。如果是这样,处理这个问题的正确方法是什么?我已经阅读了 Amazon 网站上的一些文档,了解一种名为 abortMultipartUpload 的方法,但此方法需要 UploadId,我不知道如何从我的 putObject
函数中检索它.如何在'send'
回调之前检索带有UploadID
的响应?
感谢您的帮助!
-迈克尔
【问题讨论】:
【参考方案1】:S3 PUTObject API 不是多部分请求。当您使用createMultipartUpload
发起多部分请求时,abortMultipartUpload
或completeMultipartUpload
是必需的或可以使用。 createMultipartUpload
API 的响应返回 uploadId
值。
createMultipartUpload(params = , callback) ⇒ AWS.Request 发起一个 分段上传并返回一个上传ID。注意:启动后 分段上传和上传一个或多个部分,您必须 完成或中止分段上传以停止收费 用于存储上传的部分。
分段上传步骤:-
1) 分段上传启动 - API createMultipartUpload
2) 部分上传 - API 为 upload
或 uploadPart
3) 分段上传完成(或中止) - API abortMultipartUpload
或 completeMultipartUpload
【讨论】:
以上是关于AWS S3 SDK:中止正在进行的 putObject 上传的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 aws-sdk 获取 AWS S3 上文件的 URL?