我正试图直接在浏览器中从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);
})
答案 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,关键“对象名称”等)