Ответ 1

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

Вы можете найти, что выглядит как полная реализация этих проектов:

Обратите внимание, что я не использовал, не тестировал и не рассматривал эти проекты.

Грубое описание последовательности выглядит следующим образом:

  • Пользователь
    • загружает веб-страницу
    • выбирает файл для загрузки
    • нажмите кнопку загрузки
  • Веб-страница
    • отправляет информацию о файле на сервер
  • Сервер
    • создает многостраничную загрузку с API Amazon
    • отправляет "ключ" (имя файла) и "загружает идентификатор" на веб-страницу
  • Веб-страница
    • определяет размер деталей
    • запрашивает сервер для подписывания части "ключ", "upload id", информация о части
  • Сервер
    • подписывает запрос детали, отправляет "URL-адрес загрузки части", "дата" и "заголовок auth"
  • Веб-страница
    • отправляет данные о части непосредственно в Amazon S3 через "URL-адрес для загрузки", используя "date" и "auth header"
    • отслеживает идентификаторы части
  • Сервер и веб-страница
    • повторяет 5 и 6 для каждой дополнительной части, возобновляя при необходимости
  • Веб-страница
    • делает запрос "загрузить полный" на сервер (передавая всю информацию о детали)
  • Сервер
    • делает запрос API Amazon для завершения создания файла
  • Веб-страница
    • информировать пользователя об ошибке или успехе

Примечания:

  • Если загрузка прерывается, это также необходимо обработать на стороне сервера, иначе начатые части/загрузки будут оставлены, чтобы занять место в ведре S3.
  • Может потребоваться несколько минут, чтобы завершить запрос "загрузить полный" на Amazon.