我有一个小应用程序可以将文件上传到AWS S3,它可以上传,但当我从S3 bucket下载文件时,它是编码的,显示类型:缓冲区等…
如果我从控制台上传相同的文件,它显示良好。
这里的代码上传
const fs = require('fs');
const AWS = require('aws-sdk');
const s3 = new AWS.S3({
accessKeyId: process.env.AWS_ACCESS_KEY,
secretAccessKey: process.env.AWS_SECRET_ACCESS_KEY
});
const fileName = 'su.csv';
const uploadFile = () => {
fs.readFile(fileName, (err, data) => {
if (err) throw err;
const params = {
Bucket: 'mybukk22-test', // pass your bucket name
Key: 'su.csv', // file will be saved as testBucket/contacts.csv
Body: JSON.stringify(data, null, 2)
};
s3.upload(params, function (s3Err, data) {
if (s3Err) throw s3Err
console.log(`File uploaded successfully at ${data.Location}`)
});
});
};
uploadFile();
问题出在身体上吗?如何保存与客户端相同的文件?感谢
问题是您正试图在Buffer
上执行JSON.stringify
,因为fs.readFile
会返回Buffer
。为了使其工作,您可以将params
更改为以下内容:
const params = {
Bucket: 'mybukk22-test', // pass your bucket name
Key: 'su.csv', // file will be saved as testBucket/contacts.csv
Body: data
};
(只需将data
1:1作为upload
操作的Body
(
否则,如果您想坚持您的解决方案,只需将data
强制转换为如下字符串:JSON.stringify(data.toString(), null, 2)