nodeJS AWS S3上传数据编码错误



我有一个小应用程序可以将文件上传到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
};

(只需将data1:1作为upload操作的Body(

否则,如果您想坚持您的解决方案,只需将data强制转换为如下字符串:JSON.stringify(data.toString(), null, 2)

最新更新