可以使用AWS SDK for Node.js的s3.putObjects方法一次性上传多个对象。以下是一个简单的示例:
const AWS = require('aws-sdk');
const s3 = new AWS.S3();
exports.handler = (event, context, callback) => {
const bucketName = 'my-bucket';
const fileNames = ['image1.jpg', 'image2.jpg', 'image3.jpg'];
const files = []; // files to be uploaded
const params = { Bucket: bucketName };
// read all files to be uploaded
fileNames.forEach((fileName) => {
const file = {
path: `/path/to/images/${fileName}`,
name: fileName,
type: 'image/jpeg',
};
files.push(file);
});
// set params for putObjects method
params['Body'] = files.map((file) => {
return { Key: file.name, Body: fs.readFileSync(file.path), ContentType: file.type };
});
params['ContentType'] = 'application/json';
// upload files to S3
s3.putObjects(params, (err, data) => {
if (err) {
console.error(err);
callback('Error', err);
} else {
console.log(data);
callback(null, 'Success');
}
});
};
在上述代码中,我们首先定义了要上传到S3的文件名,然后使用fs模块和map方法读取所有文件的二进制数据,并将其映射为key-value对象,其中key是文件名,value是文件的二进制数据。然后将映射后的对象传递给putObjects方法的Body参数中进行上传。最后,回调函数通过参数callback返回成功或失败的消息。