【发布时间】:2019-01-20 09:03:18
【问题描述】:
我想自动将从 AWS S3 下载的文件保存到我的应用程序文件夹。现在这可以手动完成。代码如下:
router.get("/download", (req, res) => {
//File S3 URL
var fileKey =
"key";
AWS.config.update({
accessKeyId: IAM_USER_KEY,
secretAccessKey: IAM_USER_SECRET,
Bucket: BUCKET_NAME
});
var s3 = new AWS.S3();
var file = fs.createWriteStream("test.csv");
var options = {
Bucket: "name",
Key: fileKey
};
res.attachment(fileKey);
var fileStream = s3
.getObject(options)
.createReadStream()
.on("error", error => {
console.log(error);
res.json({ error: "An error has occured, check console." });
})
.on("httpData", function(data) {
file.write(data);
})
.on("httpDone", function() {
file.end();
});
fileStream.pipe(res);
// fse.writeFileSync("text.csv");
});
如前所述,文件可以手动下载和保存。但是如何写入文件并自动保存在特定文件夹中呢?
谢谢
【问题讨论】:
-
fs.createWriteStream("/somefolder/test.csv") 有什么问题?
-
输出数据是:[object Object],原始文件是一个超过70k行的csv。 (98mb)
-
您的 httpData 处理程序错误。您已经在两个范围内声明了“文件”。
-
修复了这个问题。可悲的是,它不起作用。它正在创建一个 0KB 的文件。
标签: node.js amazon-web-services amazon-s3