我有一个小应用程序,可以将文件上传到AWS S3,它可以上传,但是当我从S3存储桶下载文件时,文件被编码,并显示type:buffer等...
如果我从控制台上传相同的文件,则显示正常。
这里是要上传的代码
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();
身体有问题吗?如何在客户端上保存相同的文件? 谢谢
答案 0 :(得分:2)
问题是您正在尝试在JSON.stringify
上进行Buffer
,因为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
操作中的Body
1:1作为upload
的操作}
否则,如果您想坚持自己的解决方案,只需将data
强制转换为这样的字符串:JSON.stringify(data.toString(), null, 2)