【问题标题】:How to upload several photos using aw3?如何使用aw3上传多张照片?
【发布时间】:2022-01-19 19:04:00
【问题描述】:

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

问题是我想一次将多张图片上传到我的应用程序。所以我制作了 Prisma Array [] 的 image 列,而不是 String。

但由于使用 aw3,我一次只能上传一张图片。因此,即使我将图像列设为数组,我也无法使用aw3 一次将多张图像作为数组上传。

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

  1. 多线程
  2. 多处理
  3. zip 上传 (amazon-lambda)

在我的情况下(上传文件为Array), 哪个选项是最可取的? 你能教我怎么做吗?

我的后端代码:

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;
};

【问题讨论】:

  • 你是从客户端上传还是从服务器上传?无论哪种方式,您都可以先上传所有文件(只是 Promise.all 或类似的东西),然后调用后端或更新数据库实体等。
  • @Danila 来自服务器。我编辑我的帖子,包括我的代码。上面的这段代码不能生成数组。你能教我更多吗?

标签: amazon-web-services react-native amazon-s3 graphql prisma


【解决方案1】:

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

// 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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-28
    • 2018-11-20
    • 2017-03-30
    • 1970-01-01
    • 1970-01-01
    • 2015-09-30
    相关资源
    最近更新 更多