我正在使用节点js,我正在尝试将CSV文件上传到Amazon S3 Bucket,它应该给我回复的csv网址。 我有以下格式的JSON数据: -
["a","b","c","d"]
我怎么能这样做?
答案 0 :(得分:1)
由于您使用的是Javascript,因此您可以查看AWS Amplify的存储组件:DEMO
对于您的用例,它将类似于:
Storage.put('userfile.csv', 'User XXX CSV uploading')
.then (result => console.log(result))
.catch(err => console.log(err));
答案 1 :(得分:1)
您可以将AWS用于此代码,就像您可以在test.csv中的文件中编写所需数据一样,因为我们有权在tmp文件夹上写入。我们使用包裹' fs'用于文件写入和读取。
let csvContent '';
neededData.forEach((rowArray) => {
const row = Object.values(rowArray);
csvContent += `${row}\r\n`;
});
const tempFileName = `/tmp/test.csv`;
fs.writeFileSync(tempFileName, csvContent);
AWS.config.update({ accessKeyId: '....',secretAccessKey'....' });
return await uploadFile(tempFileName);
我们制作了一个函数uploadFile
方法:
async function uploadFile(filePath) {
return new Promise((resolve, reject) => {
fs.readFile(filePath, (err, datauser) => {
if (err) reject(err);
const base64data = new Buffer(datauser, 'binary');
const fileName = 'filename';
const bucketName = 'bucket name';
const rigion = 'rigion';
link = `https://s3-${rigion}.amazonaws.com/${bucketName}/${fileName}`;
const s3 = new AWS.S3();
s3.putObject({
Bucket: bucketName,
Key: fileName,
Body: base64data,
ACL: 'public-read',
}, () => {
resolve(link);
});
});
});
}
此功能将在AWS上推送文件并返回URL。