哪种方法更好?从客户端还是从服务器端上传文件?

Kod*_*uri 4 file-upload amazon-s3 amazon-web-services node.js

我想上传一个文件到AWS s3. 我使用 nodejs 作为服务器。

我想知道哪种方法更好。从客户端还是服务器端上传?

由于文件大小很大,我担心发送到服务器端并处理它的带宽。

同时我担心从客户端处理它的密钥的安全问题。

从客户端和服务器端上传文件的优缺点是什么?

Joh*_*ley 8

客户端 -> 您的服务器 -> S3 上传注意事项:

  • 安全性 - 您将如何控制谁将文件上传到您的服务器?
  • 安全性 - 您将如何控制上传到服务器的文件大小?
  • 成本 - 到您服务器的入站流量是免费的。从您的服务器到 S3 的出站费用将由您支付。
  • 性能 - 您的实例的类型和大小将决定从用户到您的服务器,然后从您的服务器到 S3 的整体上传性能。
  • 可靠性 - 您的服务器需要可供用户上传到您的服务器。
  • 可靠性 - 您的服务器需要可靠的代码才能将文件传输到 S3。
  • 复杂性 - 您可以控制并负责将文件传输到客户心目中的 S3。上传问题到您的服务器将是您在客户心中的错。

客户端直接上传到 S3 注意事项:

  • 安全性 - 您有许多选项可以为用户提供上传到 S3 的访问权限:a) 签名 URL b) 访问密钥(可怕的想法)c) Cognito 提供临时访问密钥。建议:使用在您的服务器上生成的签名 URL,并且不要将任何类型的访问密钥交给客户端。

  • 成本 - 从客户端到 S3 的入站是免费的。

  • 性能 - 您的服务器不是性能方面的中间人。性能将受限于用户的 Internet 连接性能。客户将不太可能(但并非总是)因为上传问题不佳而责怪您。

  • 可靠性 - 有许多经过良好测试的库可用于上传到 S3。建议:投资生产质量客户端(网络浏览器)库,处理互联网中断和其他问题、重试、良好的用户提示、后台上传等。

  • 复杂性 - 您仍然需要为服务器端和客户端编写代码(或购买)。但是,通过选择高质量的软件,您可以减少头痛。