【问题标题】:Amazon S3 POST upload (from iPhone)Amazon S3 POST 上传(从 iPhone)
【发布时间】:2010-12-17 18:32:26
【问题描述】:

一些背景知识:我正在构建一个带有补充服务器后端的 iPhone 应用程序(用 Rails 或可能的 Sinatra 编写,但可能与本次讨论无关)。部分功能涉及将图片从 iPhone 上传到服务器。这些最终都存储在 S3 上,所以为了简化应用程序并节省带宽,我想将图片直接从 iPhone 上传到 S3,跳过我的后端服务器。

使用 S3 REST API(在这种情况下,我可能会使用 ASIHTTPRequest)意味着将 AWS 密钥和机密存储在 iPhone 应用程序中,出于安全原因,我不想这样做。

出于类似的原因,我不想让我的 S3 存储桶公开可写。

现在看起来 S3 也支持browser-based uploads using POST。如果我理解正确,这可以通过在服务器上生成一个签名的策略文档来工作,然后允许客户端应用程序直接将文件发布到 S3。原则上,这似乎不仅适用于浏览器,也适用于 iPhone 应用程序。

但是,我很难弄清楚让它工作的确切方法(不是 iPhone 特定的部分,一般来说只是 S3 POST 上传)。为了计算签名,需要将哪些信息发送到服务器(例如,它是否需要文件大小或任何其他文件信息)?我将进一步研究官方文档并开始对此进行试验,但如果有人能指出一些教程或示例代码,我将不胜感激。

【问题讨论】:

    标签: iphone post amazon amazon-web-services amazon-s3


    【解决方案1】:

    当您生成策略时,您可以通过构造 JSON 字符串以各种方式(键名、mime 类型、文件大小等)限制上传的内容。然后使用您的 AWS 密钥对这些限制(包括到期日)进行签名。然后,您发布已签署的策略,并将密钥作为表单参数访问 AWS,以及新资源的密钥、内容以及您喜欢的任何其他元数据。

    官方文档是我所知道的唯一参考资料(但我也没有搜索过...)

    http://docs.amazonwebservices.com/AmazonS3/2006-03-01/dev/HTTPPOSTForms.html#HTTPPOSTConstructPolicy

    是您可能最感兴趣的页面。

    【讨论】:

    • 感谢您的解释。我希望那里可能有更多类似教程的东西,但回想起来,亚马逊文档似乎拥有所有必要的信息,所以我应该开始尝试它。
    猜你喜欢
    • 2013-01-28
    • 2010-11-06
    • 2012-01-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-05
    • 2018-09-29
    • 2021-04-27
    相关资源
    最近更新 更多