Многочастная загрузка HTML5 и Amazon S3

Можно ли использовать файловый API HTML 5 (например, эту библиотеку: https://github.com/23/resumable.js ) в сочетании с функцией многокомпонентной загрузки S3?

http://docs.aws.amazon.com/AmazonS3/latest/dev/uploadobjusingmpu.html


person sleepy_keita    schedule 06.08.2013    source источник


Ответы (1)


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

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

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

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

  1. User
    • loads webpage
    • выбирает файл для загрузки
    • нажимает кнопку загрузки
  2. Webpage
    • sends info about file to server
  3. Server
    • creates multipart upload with Amazon API
    • отправляет «ключ» (имя файла) и «идентификатор загрузки» обратно на веб-страницу
  4. Webpage
    • works out size of parts
    • запрашивает сервер подписать часть, передавая «ключ», «идентификатор загрузки», информацию о части
  5. Server
    • signs a part request, sends "part upload url", "date" and "auth header"
  6. Webpage
    • sends part data directly to Amazon S3 via "part upload url" using "date" and "auth header"
    • отслеживает идентификаторы деталей
  7. Server & Webpage
    • repeats 5 & 6 for each additional part, resuming if required
  8. Webpage
    • makes "upload complete" request to server (passing all the part info)
  9. Server
    • makes request to Amazon API to complete the creation of file
  10. Webpage
    • inform user of error or success

Примечания:

  • Если загрузка прервана, это также должно быть обработано на стороне сервера, иначе начатые части/загрузки останутся занимать место в корзине S3.
  • Выполнение запроса «загрузка завершена» в Amazon может занять несколько минут.
person Dean Taylor    schedule 15.10.2013
comment
Спасибо за подробный ответ! На самом деле я начал реализовывать протокол, который вы описали ранее, но еще не успел его закончить: github.com/keichan34/s3uploader/tree/2.0-wip - person sleepy_keita; 16.10.2013
comment
Отлично, я заметил, что вы используете Ruby в своем проекте, а также нашел еще один проект Ruby, который я добавил в ответ для справки. - person Dean Taylor; 16.10.2013
comment
Вот еще один пример в PHP https://github.com/ienzam/s3-multipart-upload-browser - person roundrobin; 20.02.2014
comment
@BausTheBig это первый проект, указанный в ответе. Очевидно, это было неясно, поэтому благодаря вашему комментарию я обновил ответ, чтобы сделать ссылку более понятной. - person Dean Taylor; 20.02.2014
comment
Большое спасибо! Ответ очень подробный, именно то, что мне нужно прямо сейчас. Это еще один интересный проект (в нем используется Python), на который стоит обратить внимание: github.com/cinely/ mule-uploader#mule-upload - person roundrobin; 20.02.2014
comment
@BausTheBig на самом деле, большая часть проекта написана на Javascript, ему нужна только небольшая конечная точка на стороне сервера, которую можно легко написать на любом языке. Однако каноническая конечная точка написана на Python (Flask). - person Gabi Purcaru; 25.02.2014