首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用aw3上传多张照片?

如何使用aw3上传多张照片?
EN

Stack Overflow用户
提问于 2022-01-19 05:32:11
回答 1查看 130关注 0票数 1

我使用react native,后端是用PrismaGraphQL (Apollo服务器)构建的。我不将图像数据存储到Prisma,而是存储到aw3

问题是我想一次上传几张图片到我的应用程序。所以我制作了Prisma Array []的图像列,而不是字符串。

但由于使用aw3,我只能一次上传一张图片。因此,即使我将图像列设置为数组,也不能使用aw3一次以数组的形式上传多个图像。

当我搜索时,人们建议了3个选项,以便通过aw3上传多个文件。

  1. multi-thread
  2. multi-processing
  3. zip上传(amazon-lambda)

在我的例子中(以Array的形式上传文件),哪个选项是最可取的?你能教我怎么做吗?

我的后端代码:

代码语言:javascript
复制
export const uploadToS3 = async (file, userId, folderName) => {
  const { filename, createReadStream } = await file;
  const readStream = createReadStream();
  const objectName = `${folderName}/${userId}-${Date.now()}-${filename}`;
  const { Location } = await new AWS.S3()
    .upload({
      Bucket: "chungchunonuploads",
      Key: objectName,
      ACL: "public-read",
      Body: readStream,
    })
    .promise();
  return Location;
};
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-01-19 10:57:38

我们需要用Promise.all解决多个文件上传承诺。让我们重构我们的代码并将其分解为两个函数。

代码语言:javascript
复制
// Assume that we have list of all files to upload
const filesToUpload = [file1, file2, file3, fileN];

export const uploadSingleFileToS3 = async (file, userId, folderName) => {
  const { filename, createReadStream } = await file;
  const readStream = createReadStream();
  const objectName = `${folderName}/${userId}-${Date.now()}-${filename}`;
  const response = await new AWS.S3().upload({
    Bucket: "chungchunonuploads",
    Key: objectName,
    ACL: "public-read",
    Body: readStream,
  });

  return response;
};

const uploadMultipleFilesToS3 = async (filesToUpload, userId, folderName) => {
  const uploadPromises = filesToUpload.map((file) => {
    return uploadSingleFileToS3(file, userId, folderName);
  });

  // Array containing all  uploaded files data
  const uploadResult = await Promise.all(uploadPromises);

  // Add logic here to update the database with  Prisma ORM
};

// Call uploadMultipleFilesToS3 with all required parameters
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70765713

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档