首页 > 解决方案 > 如何使用nodejs将单个文件上传到aws s3上的多个路径?

问题描述

如何使用 nodeJS 将单个文件上传到 aws-s3 上的多个路径?问题:我有 1 个图像文件:images.jpg。现在,我想用不同的路径将此文件上传到 aws-s3。

标签: node.jsamazon-web-servicesamazon-s3

解决方案


将文件上传到 s3 中的不同目录,提供您的 accesskeyid 和 secretaccesskey,

const fs = require('fs'),
    AWS = require('aws-sdk'),
    {promisify} = require('util')



const uploadFile =async (file_path, folder) => {
    try {
        var s3 = new AWS.S3({
            accessKeyId: '',
            secretAccessKey: ''
        });

        //reading the file and converting it into buffer
        const readFile = promisify(fs.readFile).bind(fs);
        const data =await readFile(file_path)
        if (!data) throw "reading file failed";
        const params = {
            Bucket: 'testbucketnayan', // bucket name
            Key: `${folder}/file.js`,
            Body: data.toString()
        };
        const upload =  promisify(s3.upload).bind(s3);
        const up_data  = await upload(params)
        if (!up_data) throw "Upload failed"
        console.log(up_data)
    } catch(err) {
        console.log(err);
    }
}

上传位置具有目录名称。文件将上传到哪里。循环遍历数组并上传文件,你可以使用 Promise.all,它会提高性能。

const upload_location = ['abc', 'def'];
(async () => {
    for (var folder of upload_location) 
        await uploadFile('resposetwi.js', folder);
})()

请用您尝试过的代码提出您的问题,这样更容易理解问题出在哪里。


推荐阅读