Разрешение нескольких типов контента в HTTP POST. Загрузите документ политики загрузки Amazon S3.

Кто-нибудь знает, как разрешать несколько типов контента в политике загрузки Amazon S3 при загрузке с помощью HTTP POST? Кажется, я никак не могу найти ответ.

Мне известно, что я могу ограничить загрузку в любой файл с типом MIME, который начинается с "image/" следующим образом:

{"expiration": "2015-02-28T00:00:00Z",
  "conditions": [ 
    ["starts-with", "$Content-Type", "image/*"]
  ]
}

Но как мне позволить разрешить только несколько типов MIME, которые могут не все начинаться с одних и тех же символов?

Ответ 1

Это не поддерживается. Это либо совпадение одного шаблона (включая подстановочный знак), либо вы должны разрешить все.

В зависимости от того, как формируется форма - динамически, можно предположить, что вы можете просто указать приложению тип содержимого файла, который вы собираетесь загрузить при запросе ресурса, который создает форму, следовательно, сообщив приложению, какое значение типа контента использовать в форме и при создании документа политики.

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

В зависимости от приложения может быть мало смысла слишком беспокоиться о поле Content-Type здесь, потому что это фактически не ограничивает типы содержимого, которые могут быть загружены... это ограничивает только значение, переданное в value параметра input type="input" name="Content-Type". Все это фактически ограничивает.

Не выполняется проверка того, действительно ли это значение представляет тип MIME обновляемой полезной нагрузки, поэтому документ политики не ограничивает, какой контент вы можете загрузить. Это только ограничивает, какой контент вы можете утверждать, что вы загружаете.

Кроме того, может быть более целесообразным просто принять неприемлемые закачки в другом месте и решить проблему на внутреннем сервере после факта.