AWS S3直接通过浏览器下载文件

时间:2017-06-14 13:38:32

标签: javascript node.js amazon-s3

我正试图直接在浏览器中从S3下载文件。我正在使用AWS Javascript SDK和NodeJS + Webpack。

我可以发出GetObject请求,并可以在“开发者工具”视图中看到浏览器(Chrome)下载字节。

我在响应中设置了“内容处理”标题:

Content-Disposition:attachment; filename="A1.jpeg"

但是,我没有看到“另存为”对话框或我的文件系统中创建的任何文件(在“下载”文件夹中)。字节到哪里去了?

如何将数据保存在文件中?

这是我的代码:

var getObject = function getObject(bucketName, fileName) {

    var params = {
        Bucket: bucketName,
        Key: fileName,
        ResponseContentDisposition: 'attachment; filename="' + fileName + '"'
    };

    return s3.getObject(params).promise();

}

getObject(BUCKET_NAME, item)
.then(
    function (getFileResponse) {
        console.log(" file downloaded.. " );
    }
    ,
    function(error) {
        // Common error handling
        console.log(" error = " + error);
})

1 个答案:

答案 0 :(得分:2)

之前我遇到过这种情况,然后我使用“s3.getSignedUrl”函数代替“s3.getObject”,如下所示:

s3.getSignedUrl('putObject',s3Params).then(function(url){
  //the returned "url" used by the browser to download
},function(error){
  //Error handling
})

和s3Params将包含(Buckey,关键“对象名称”等)