AWS S3标准上传schemevs基于浏览器的节点上传

我试图了解标准AWS S3上传scheme(例如使用aws-sdk)和基于浏览器的上传(特别是在node.js中)之间的实现差异。

我知道在任何情况下,都需要有一个服务器来存储我的AWS凭据并在S3上签名。

但是有一些我不明白的东西:

  • 如果我使用基于浏览器的上传,我将在客户端使用HTML表单,并在隐藏字段中使用我的服务器获取的策略值。 但是,如果我使用标准scheme上传文件,即完全通过我的服务器,它究竟是如何实现的? 服务器端实现有很多代码示例,但客户端应该发生什么? 所以,会有一个HTML表单, action属性指向我的服务器的URL,指定用于file upload,对吧? 但是会发生什么呢? 将文件首先上传到我的服务器的存储,然后到S3? 或者它会以某种方式使用stream媒体或什么? 它真的让我困惑,我真的很感激一些代码示例,其中有服务器端和客户端代码。
  • 这两个上传计划有什么优点和缺点? 我应该什么时候比另一种方式更倾向于一种方法(我的个人用例 – 用多帐户系统上传video)?