AWS S3 SDK:如何从多文件上载中的进度回调中获取文件名?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了AWS S3 SDK:如何从多文件上载中的进度回调中获取文件名?相关的知识,希望对你有一定的参考价值。

所以我使用AWS S3 javascript SDK上传多个文件。以下代码运行良好,但我确实有一个问题。用于进度的function (evt)被异步调用,我无法获取它所调用的文件名。 evt不包含文件名。有没有办法知道?

如何将文件名输出到控制台(我显示>>> I NEED THE FILENAME HERE <<<

for (var i = 0; i < files.length; i++) {
        var file = files[i];
        if (files[i]) {
            var params = {Key: file.name, ContentType: file.type, Body: file};
            bucket.upload(params).on('httpUploadProgress', function(evt) {
                console.log("Uploaded  "  + >>> I NEED THE FILENAME HERE <<< + " " + parseInt((evt.loaded * 100) / evt.total)+'%');
            }).send(function(err, data) {
                //alert("File uploaded successfully -- " + err);
            });
        }
    }
答案

evt.key - >应该给出正在上传的文件名...... !!!

Result of Evt

编辑:

这是我用于托管上传的完整代码

app.post('/uploadLargeFile',upload.array('file', 20),function(req,res){

    console.log("received File")
    var file = req.files;
    for(var i=0;i<req.files.length;i++){
        var file = req.files[i];
        uploadLargeFiles(file);
    }
})

function uploadLargeFiles(file){
    var params={
        ACL :'public-read',
        Body : new Buffer(file.buffer),
        Bucket:'ascendon1',
        ContentType:file.mimetype,
        Key:file.originalname
    }
    var managedUpload = new AWS.S3.ManagedUpload({
        params:params
    });
    managedUpload.on('httpUploadProgress', function(progress) {
        console.log(progress);
    });

    managedUpload.send(function(err, data) {
        console.log(err, data);
    });

}

以上是关于AWS S3 SDK:如何从多文件上载中的进度回调中获取文件名?的主要内容,如果未能解决你的问题,请参考以下文章

AWS SDK JavaScript:如何显示 AWS.S3.putObject 的上传进度?

php 将文件上载到AWS S3

如何使用AWS SDK从S3下载对象--RESTful。

如何使用AWS SDK从S3下载对象--RESTful。

如何使用 aws-sdk 获取 AWS S3 上文件的 URL?

如何强制删除 S3 存储桶中的所有对象版本,然后最终使用 aws-sdk-go 删除整个存储桶?