一种实现文件上传会话的方法

问题描述 投票:0回答:1

最近一直在探索上传会话这个话题,还是有很多疑问。我想征求您的意见。

我观察了一些网站如何实现上传会话,例如Mangadex,通过以下方式:

  1. 首先,他们向服务器发送请求以检索旧的上传会话 ID。如果存在,他们会删除旧会话。
  2. 然后,他们发送另一个请求以获取新的上传会话 ID。
  3. 接下来,他们将用户文件批量上传到 S3(每个请求 3 个文件)。响应包含一些信息,例如生成的文件 ID(本例中为 Uuid v4)、文件哈希、原始文件名等。
  4. 最后,他们向服务器发送提交请求以确认上传会话完成。服务器处理会话(调整大小、打乱等)。

我的问题:

  1. 我是否可以在没有生成文件 ID 的中间服务器的情况下处理从客户端到 S3 的文件上传过程,或者我必须通过中间服务器传递文件来生成文件 ID?

  2. 如果我必须传递到服务器来生成文件 ID,当它每分钟最多可以处理 1000 张图像时,我该如何扩展?我的 VPS 有 4GB RAM。

  3. 以上过程只是我的假设。如果错误,请向我提供实现文件上传会话的正确方法。

非常感谢您阅读本文。

file amazon-s3 multipartfile
1个回答
0
投票

您可以使用 presignedURL 来做到这一点:

  1. 从客户端发送请求到服务器端以生成 presignedURL(服务器端将验证并处理文件将放置的位置,...)
  2. 之后,服务器将向客户端发送回带有超时设置的预签名 URL。客户端将使用该 URL 发出将文件直接上传到 S3 的请求

您可能会询问文件信息(大小、元数据……)您可以获取该信息并在第一个请求中发送到服务器。这意味着您将在返回 presignedURL 的请求中发送文件信息。在此过程中,您可以验证以下内容:

  • 您的系统中有客户端域吗?
  • 接受列表中的文件类型?
  • ...等等

注:

  • 也许我们需要验证客户端和服务器的一些属性
  • 如果您使用相同的预签名 URL 上传多次。它将取代旧的
  • 也许您需要其他服务来检查文件内容(以防最终用户上传敏感文件或类似文件)

希望我的想法可以帮到你

© www.soinside.com 2019 - 2024. All rights reserved.