我已经可以将文件上传到s3了。但我想在每个文件中加载进度。
bucket.upload(params, function(err, data){
console.log("File Uploaded Successfully");
}).on('httpUploadProgress', function(progress){
console.log(progress.loaded / progress.total * 100);}
此代码存在问题。进度会返回一些数据,但不会确定此数据是针对该单个文件的。
有没有办法找出返回进度是否针对该单个数据?
答案 0 :(得分:1)
对于那些遇到同样问题的人。实际上没有必要破解代码。只需在上传进度回调中使用this
。
s3.upload(params, function (err, data) {
...
}).on('httpUploadProgress', function(progress) {
// Here you can use `this.body` to determine which file this particular
// event is related to and use that info to calculate overall progress.
});
我在AWS SDK JS repo中发布了issue,随着时间的推移,可能会有更好的解决方案。
答案 1 :(得分:0)
很抱歉迟到的答案(我甚至不确定你是否还需要答案)。
我有同样的问题,我分叉their repo on github并自己制定解决方案。
这里是更新的aws-sdk-js repo的附件,可以满足您的需求。
希望它有所帮助。答案 2 :(得分:0)
这对我有用。
S3.upload(params, options, function (err, data) {
if (err) {
reject("error");
}
alert("Successfully Uploaded!");
}).on("httpUploadProgress", (progress) => {
let uploaded = parseInt((progress.loaded * 100) / progress.total);
this.setState({
progress: uploaded,
uploadText: "Uploading...",
uploading: true,
});
});