我有一个小应用程序可以将文件上传到AWS S3,它上传正常,但是当我从S3存储桶下载文件时,它会被编码,显示类型:缓冲区等...
如果我从控制台上传相同的文件,它显示得很好。
这里是要上传的代码
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();
是 body 的问题吗?如何保存与客户端相同的文件? 谢谢
最佳答案
问题是您尝试在 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)
关于node.js - nodeJS AWS S3上传数据编码错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51395046/