Загрузка Amazon P3 POST (с iPhone) - PullRequest
7 голосов
/ 18 ноября 2009

Немного предыстории: я создаю приложение для iPhone с дополнительным серверным бэкэндом (написанным на Rails или, возможно, на Sinatra, но, вероятно, не относящимся к этому обсуждению). Часть функций включает в себя загрузку изображений с iPhone на сервер. В конечном итоге они сохраняются на S3, поэтому, чтобы упростить приложение и сохранить пропускную способность, я бы хотел загрузить изображения непосредственно с iPhone на S3, пропустив мой сервер.

Использование S3 REST API (в этом случае я бы, вероятно, использовал ASIHTTPRequest ) означало бы сохранение ключа и секрета AWS в приложении iPhone, что я не хочу делать из соображений безопасности.

По тем же причинам я не хочу, чтобы моя корзина S3 была общедоступной для записи.

Теперь похоже, что S3 также поддерживает загрузку через браузер с использованием POST . Если я правильно понимаю, это работает путем генерации подписанного документа политики на сервере, который затем позволяет клиентскому приложению напрямую отправлять файл в S3. Кажется, что в принципе это должно работать не только для браузеров, но и для приложений iPhone.

Тем не менее, мне трудно понять, как именно это работает (не часть, касающаяся iPhone, просто загрузка S3 POST в общем). Какую информацию необходимо отправить на сервер для вычисления подписи (например, нужен ли ему размер файла или какая-либо другая информация о файле)? Я еще немного покопаюсь в официальных документах и ​​начну экспериментировать с этим, но если кто-нибудь подскажет мне какие-то учебные пособия или примеры кода, это будет очень признательно.

1 Ответ

5 голосов
/ 18 ноября 2009

Когда вы генерируете политику, вы можете ограничивать загружаемое различными способами (имя ключа, тип mime, размер файла и т. Д.), Создавая строку JSON. Эти ограничения (включая истечение срока действия) затем подписываются с использованием вашего секретного ключа AWS. Затем вы публикуете подписанную политику и получаете доступ к ключу в качестве параметров формы в AWS вместе с ключом для нового ресурса, его содержимого и любых других метаданных, которые вам нравятся.

Официальный документальный документ - это единственное упоминание, о котором я знаю (но я не гуглил и его ...)

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

- это страница, которая вас больше всего интересует.

...