从JSON数据上载CSV文件到S3 Bucket

时间:2017-12-28 11:16:03

标签: javascript mongodb amazon-s3 amazon-ec2 graphql

我正在使用节点js,我正在尝试将CS​​V文件上传到Amazon S3 Bucket,它应该给我回复的csv网址。 我有以下格式的JSON数据: -

["a","b","c","d"]

我怎么能这样做?

2 个答案:

答案 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。

相关问题