带有回调httpUploadProgress的AWS SDK JavaScript承诺
我正在尝试使用AWS S3 SDK JavaScript获取httpUploadProgress。 使用这几行代码,我可以看到上传进度的预期结果,但如何使用Promise()获得相同的结果,我在浏览器中将其用作外部JS资源 工作示例:带有回调httpUploadProgress的AWS SDK JavaScript承诺,javascript,amazon-s3,aws-sdk,aws-sdk-js,Javascript,Amazon S3,Aws Sdk,Aws Sdk Js,我正在尝试使用AWS S3 SDK JavaScript获取httpUploadProgress。 使用这几行代码,我可以看到上传进度的预期结果,但如何使用Promise()获得相同的结果,我在浏览器中将其用作外部JS资源 工作示例: function uploadFile(){ var bucket = new AWS.S3({params: {Bucket: BUCKET_NAME}}); var fileChooser = document.getE
function uploadFile(){
var bucket = new AWS.S3({params: {Bucket: BUCKET_NAME}});
var fileChooser = document.getElementById('file');
var file = fileChooser.files[0];
if (file) {
console.log();
var opts = {queueSize: 1, partSize: 1024 * 1024 * 5};
var params = {Key: file.name, ContentType: file.type, Body: file};
s3.upload(params,opts).on('httpUploadProgress', function(evt) {
console.log("Uploaded :: " + parseInt((evt.loaded * 100) / evt.total)+'%');
}).send(function(err, data) {
console.log(err);
alert("File uploaded successfully.");
});
}
return false;
}
我希望承诺也是如此
function uploadFile(){
var bucket = new AWS.S3({params: {Bucket: BUCKET_NAME}});
var fileChooser = document.getElementById('file');
var file = fileChooser.files[0];
if (file) {
console.log();
var opts = {queueSize: 1, partSize: 1024 * 1024 * 5};
var params = {Key: file.name, ContentType: file.type, Body: file};
var promise = s3.upload(params,opts).promise();
promise()
.then(function(data){}, function(error){})
}
return false;
}
我也有同样的问题。我不确定你是否实现了它,但我认为这是你可能正在寻找的
function async uploadFile(){
var bucket = new AWS.S3({params: {Bucket: BUCKET_NAME}});
var fileChooser = document.getElementById('file');
var file = fileChooser.files[0];
if (file) {
console.log();
var opts = {queueSize: 1, partSize: 1024 * 1024 * 5};
var params = {Key: file.name, ContentType: file.type, Body: file};
var upload = s3.upload(params,opts)
.on('httpUploadProgress', function(evt) {
console.log("Uploaded :: " + parseInt((evt.loaded * 100) / evt.total)+'%');
})
.promise();
await upload.then(function(err, data) {
console.log(err);
alert("File uploaded successfully.");
});
}
return false;
}