一点背景知识:我正在构建一个带有补充服务器后端的 iPhone 应用程序(用 Rails 或可能的 Sinatra 编写,但可能与本次讨论无关)。部分功能涉及将图片从 iPhone 上传到服务器。这些最终存储在 S3 上,因此为了简化应用程序并节省带宽,我想将图片直接从 iPhone 上传到 S3,跳过我的后端服务器。
使用 S3 REST API(在这种情况下我可能会使用ASIHTTPRequest)意味着将 AWS 密钥和秘密存储在 iPhone 应用程序中,出于安全原因,我不想这样做。
出于类似的原因,我不想让我的 S3 存储桶公开可写。
现在看起来 S3 也支持使用 POST 进行基于浏览器的上传。如果我理解正确,这可以通过在服务器上生成一个签名的策略文档来工作,然后允许客户端应用程序直接将文件发布到 S3。原则上,这似乎不仅适用于浏览器,也适用于 iPhone 应用程序。
但是,我很难弄清楚让它工作的确切方法(不是 iPhone 特定的部分,一般只是 S3 POST 上传)。为了计算签名需要向服务器发送哪些信息(例如,它是否需要文件大小或任何其他文件信息)?我将进一步研究官方文档并开始对此进行试验,但是如果有人可以向我指出一些教程或示例代码,那将不胜感激。