背景介绍:我正在开发一款iPhone应用程序,配备有服务器后端(使用Rails或可能是Sinatra编写,但对此讨论可能不重要)。功能的一部分涉及将图片从iPhone上传到服务器。最终,这些图片会存储在S3上,因此为了简化应用程序并节省带宽,我希望能够直接从iPhone上传图片到S3,跳过我的后端服务器。
如果使用S3 REST API(在这种情况下,我很可能会使用ASIHTTPRequest),则意味着在iPhone应用程序中存储AWS密钥和密钥,出于安全原因,我不想这样做。
出于类似的原因,我也不希望使我的S3存储桶公开可写。
现在看起来S3也支持使用POST进行基于浏览器的上传。如果我理解正确,这是通过在服务器上生成签名策略文档来实现的,然后允许客户端应用程序直接将文件POST到S3。它似乎在原则上不仅适用于浏览器,而且也适用于iPhone应用程序。
然而,我很难弄清楚确切的方法来使它工作(不是 iPhone 特定部分,只是 S3 POST 上传一般情况下)。需要发送哪些信息到服务器以计算签名(例如,是否需要文件大小或任何其他文件信息)?我会进一步查阅官方文档并开始尝试。