【问题标题】:AWS S3: should I use POST or PUT requests to upload a file?AWS S3:我应该使用 POST 还是 PUT 请求来上传文件?
【发布时间】:2017-11-04 14:54:11
【问题描述】:

我想知道使用 POST 或 PUT 请求将文件上传到 Amazon Web Services S3 的优缺点。

我已经阅读过一些类似this one 的 SO 问题,但我想知道使用 AWS API 时的具体区别。

我设法同时使用了两者,但几乎看不出区别。我通过 AJAX 和 XMLHTTPRequest 对象同时使用 PUT 和 POST,通过 node.js 后端生成签名直接从浏览器上传。

我注意到的不同之处在于,当我生成签名时,我无法使用 PUT 限制服务器端的内容类型和长度,但这可能是因为我现在只是在学习它。

【问题讨论】:

  • 在API设计指南方面,POST请求用于向服务器发送数据,例如客户信息、文件上传等,使用HTML表单。并且 PUT 请求用于将目标资源的所有当前表示替换为上传的内容。
  • 是的,但我的问题更具体的是 AWS。我想要将两者与 AWS S3 一起使用的利弊
  • 我注意到的不同之处在于,当我生成签名时,我无法使用 PUT 限制服务器端的内容类型和长度。 问:您使用的是 Signature Version 2还是4? V4 签名可以通过查看Authorization: AWS4-HMAC-SHA256 ...(如果使用标头)或X-Amz-Algorithm=AWS4-HMAC-SHA256(如果使用查询字符串)来识别。
  • 我正在使用签名 V4

标签: javascript ajax amazon-web-services amazon-s3


【解决方案1】:

除了您注意到的差异之外,使用 POST 时,您得到的响应包含对象键名。如果您并行上传多个对象,这很有用,可以在回调中识别哪个上传成功或失败。

同样对于访问控制,您可以不同地使用 POST 和 PUT(例如不允许对象修改,而只允许创建)

【讨论】:

  • 那么使用 POST 我将拥有更多控制权吗?在这种情况下,我为什么要使用 PUT?
  • 对于访问控制,授予可以创建和更新的权限会很有用
【解决方案2】:

要将对象从应用程序上传到 Amazon S3 存储桶,您应该使用给定编程语言的 AWS 开发工具包。例如,如果您正在使用 JavaScript 构建应用程序,则可以使用适用于 JavaScript 的 AWS 开发工具包并使用其客户端上传对象。

Uploading photos to Amazon S3 from a browser

同样,如果您正在构建 Spring BOOT 应用程序,则使用 AWS SDK for Java V2 上传对象。此处显示了一个示例:

Creating an example AWS photo analyzer application using the AWS SDK for Java

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-08-09
    • 2014-11-06
    • 1970-01-01
    • 1970-01-01
    • 2011-08-30
    • 2020-04-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多