HTML5 и Amazon S3 загрузки нескольких частей
Можно ли использовать HTML 5 File API (например, эту библиотеку: https://github.com/23/resumable.js) в сочетании с функцией загрузки нескольких частей S3?
http://docs.aws.amazon.com/AmazonS3/latest/dev/uploadobjusingmpu.html
1 ответ
Решение
Да, но вам понадобится какой-нибудь серверный сервер для более безопасной обработки ключей API Amazon, если вы собираетесь сделать его частью общедоступного веб-сайта.
Вы можете найти то, что выглядит как полный пример реализации этих проектов:
- https://github.com/ienzam/s3-multipart-upload-browser, использующий бэкэнд PHP
- s3_multipart, которая использует Ruby.
Обратите внимание, что я не использовал, не проверял и не проверял эти проекты.
Грубое описание последовательности выглядит следующим образом:
- пользователь
- загружает веб-страницу
- выбирает файл для загрузки
- кнопка загрузки хитов
- Страница интернета
- отправляет информацию о файле на сервер
- сервер
- создает многочастную загрузку с Amazon API
- отправляет "ключ"(имя файла) и "загрузить идентификатор" обратно на веб-страницу
- Страница интернета
- определяет размер частей
- просит сервер подписать передачу части "ключ", "идентификатор загрузки", информация о детали
- сервер
- подписывает запрос части, отправляет "URL загрузки части", "дату" и "заголовок аутентификации"
- Страница интернета
- отправляет данные детали непосредственно в Amazon S3 через "URL-адрес загрузки", используя "date" и "auth header"
- отслеживает идентификаторы деталей
- Сервер и веб-страница
- повторяет 5 и 6 для каждой дополнительной части, возобновляя при необходимости
- Страница интернета
- делает запрос на загрузку завершенным на сервер (передавая всю информацию о детали)
- сервер
- отправляет запрос в Amazon API для завершения создания файла
- Страница интернета
- сообщить пользователю об ошибке или успехе
Заметки:
- Если загрузка прервана, это также должно выполняться на стороне сервера, иначе начатые части / загрузки будут оставлены, чтобы занять место в S3 Bucket.
- Завершение запроса "загрузить завершено" в Amazon может занять несколько минут.