【发布时间】:2019-09-06 09:38:33
【问题描述】:
我正在尝试在 NodeJS/Express 中创建一个端点,用于从我的 AWS S3 存储桶下载内容。
效果很好,我可以在客户端下载文件,但我也可以在“网络”选项卡中看到流预览,这很烦人......
问题
我想知道我所做的是否正确和良好的做法。 也想知道在Network tab看到输出流是否正常。
我应该如何使用 NodeJS/Express 正确地将我的文件从 S3 发送到我的客户端应用程序?
我很确定其他网站请求不会让您预览内容并带有:“无法加载响应数据”。
这是我在 NodeJS 应用程序中从 AWS S3 获取流文件的操作:
download(fileId) {
const fileObjectStream = app.s3
.getObject({
Key: fileId
})
.createReadStream();
this.res.set("Content-Type", "application/octet-stream");
this.res.set(
"Content-Disposition",
'attachment; filename="' + fileId + '"'
);
fileObjectStream.pipe(this.res);
}
在客户端我可以看到:
【问题讨论】:
-
我想另一种选择是让 nodejs 创建一个签名的 url 并将其发送给客户端。然后客户端可以使用该签名的 url 访问 S3 内容
标签: javascript node.js amazon-web-services express amazon-s3