首页 > 解决方案 > 如何使用 node.js 将多个缓冲区对象上传到 AWS S3 中的同一个文件?

问题描述

我正在尝试将多个缓冲区对象上传到 aws s3 中的单个文件。我无法这样做。

对于每个缓冲区,我可以将它们单独上传到 S3 中的文件,但不能合并。

let buffer: any = [];
let data: Buffer[] = [];
buffer[0] = await getModuleData("TK515184","companyProfileFull","bearer 1f96884e-8763-448b-9d07-bd4823e8e9b9","");
buffer[1] = await getModuleData("TK515184","fundingRound","bearer 1f96884e-8763-448b-9d07-bd4823e8e9b9","");
buffer[2] = await getModuleData("TK515184","acquisition","bearer 1f96884e-8763-448b-9d07-bd4823e8e9b9","");
buffer[3] = await getModuleData("TK515184","investment","bearer 1f96884e-8763-448b-9d07-bd4823e8e9b9","");
buffer[4] = await getModuleData("TK515184","fundamentals","bearer 1f96884e-8763-448b-9d07-bd4823e8e9b9","",["FY-1", "FY-0", "FQ-1", "FQ-0"],["FY+1", "FY+2", "FY+3", "FQ+1", "FQ+2", "FQ+3"]);
data[0] = await new OverviewModule().createTearSheetExcel(buffer[0]);
data[1] = await new AcquisitionModule().createAcquisitionExcel(buffer[2]);
data[2] = await new InvestmentModule().createInvestmentExcel(buffer[3]);
data[3] = await new FundingModule().createFundingExcel(buffer[1]);
data[4] = await new FAndE(["FY-1", "FY-0", "FQ-1", "FQ-0"],["FY+1", "FY+2", "FY+3", "FQ+1", "FQ+2", "FQ+3"]).createFundamentalsAndEstimatesExcel(buffer[4]);
for(let i = 0;i<5;i++)
{
    S3.upload(APP_BUCKET_NAME,"all.xlsx",data[i]);
}

"all.xlsx" => 要创建的文件名和数据=> 缓冲区数组。

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

解决方案


我不知道这是否会有所帮助,但该s3.upload() 函数的正确 sdk 是:

var params = {Bucket: 'bucket', Key: 'key', Body: stream};
var options = {partSize: 10 * 1024 * 1024, queueSize: 1};
s3.upload(params, options, function(err, data) {
  console.log(err, data);
});

选项参数不是强制性的。

现在,对于多次上传,逻辑是为所有缓冲区对象创建一个 for - 循环,并在每个缓冲区对象中使用 upload()。


推荐阅读