Ответ 1
Да, но вам понадобится какой-то серверный сервер для обработки ключей API Amazon более безопасным способом, если вы собираетесь сделать его частью общедоступного веб-сайта.
Вы можете найти, что выглядит как полная реализация этих проектов:
- s3-multipart-upload-browser, который использует бэкэнд PHP
- s3_multipart, который использует Ruby.
Обратите внимание, что я не использовал, не тестировал и не рассматривал эти проекты.
Грубое описание последовательности выглядит следующим образом:
- Пользователь
- загружает веб-страницу
- выбирает файл для загрузки
- нажмите кнопку загрузки
- Веб-страница
- отправляет информацию о файле на сервер
- Сервер
- создает многостраничную загрузку с API Amazon
- отправляет "ключ" (имя файла) и "загружает идентификатор" на веб-страницу
- Веб-страница
- определяет размер деталей
- запрашивает сервер для подписывания части "ключ", "upload id", информация о части
- Сервер
- подписывает запрос детали, отправляет "URL-адрес загрузки части", "дата" и "заголовок auth"
- Веб-страница
- отправляет данные о части непосредственно в Amazon S3 через "URL-адрес для загрузки", используя "date" и "auth header"
- отслеживает идентификаторы части
- Сервер и веб-страница
- повторяет 5 и 6 для каждой дополнительной части, возобновляя при необходимости
- Веб-страница
- делает запрос "загрузить полный" на сервер (передавая всю информацию о детали)
- Сервер
- делает запрос API Amazon для завершения создания файла
- Веб-страница
- информировать пользователя об ошибке или успехе
Примечания:
- Если загрузка прерывается, это также необходимо обработать на стороне сервера, иначе начатые части/загрузки будут оставлены, чтобы занять место в ведре S3.
- Может потребоваться несколько минут, чтобы завершить запрос "загрузить полный" на Amazon.