【问题标题】:Uploading a CSV file to S3 Bucket from JSON data将 CSV 文件从 JSON 数据上传到 S3 存储桶
【发布时间】:2018-06-08 22:35:13
【问题描述】:

我正在使用节点 js,我正在尝试将 CSV 文件上传到 Amazon S3 存储桶,它应该给我 csv 的 url 作为响应。 我有以下格式的 JSON 数据:-

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

我怎样才能达到同样的效果?

【问题讨论】:

  • 我是上传文件到 aws 的初学者
  • 所以我们在同一页面上,您有一个文件要上传到 AWS S3 服务,对吧?
  • 是的,但首先我必须调用一个 API,所有这些工作都将在 API 级别完成,我只需要文件 url

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


【解决方案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。

【讨论】:

    【解决方案2】:

    由于您使用的是 Javascript,您可能会查看 AWS Amplify 的存储组件:https://github.com/aws/aws-amplify/blob/master/media/storage_guide.md

    对于您的用例,它将类似于:

    Storage.put('userfile.csv', 'User XXX CSV uploading')
        .then (result => console.log(result))
        .catch(err => console.log(err));
    

    【讨论】:

    • 您希望它如何工作?你在哪里告诉 Storage.put() 使用什么内容/文件?
    猜你喜欢
    • 2018-02-07
    • 2021-06-20
    • 2021-10-14
    • 1970-01-01
    • 1970-01-01
    • 2019-11-07
    • 2018-04-25
    • 2019-10-23
    • 2017-03-02
    相关资源
    最近更新 更多