在内存中创建一个 zip 文件,然后存储到 AWS S3

Create a zip file in memory and then store to AWS S3

我正在尝试在内存中创建一个 zip 文件(使用 TypeScript),然后将其存储在 AWS S3 存储桶中。输入是纯文本 CSV 字符串(数据)。

我不确定我做错了什么,因为在 s3 中创建的 zip 文件在我下载文件时不可读。

代码:

const zip = new AdmZip();
zip.addFile('tmp.txt', Buffer.from(data, 'utf-8'));
const zipData = await zip.toBufferPromise();
try {
  const now = dayjs().format('YYYYMMDDTHHmmss');
  const fileName = `Feedback-${now}`;
  await this._storageService.saveFile(zipData.toString('binary'), 'sprintFeedback', fileName);

解决方案很简单: 只需将以下行的结果发送到您的 s3 存储桶,它就会存储为一个合适的 zip 文件;

const zipData: Buffer = await zip.toBufferPromise();

const command = new PutObjectCommand({
  Bucket: bucketName,
  Body: zipData,
  Key: fileName,
});

await this._s3Client.send(command);