Ответ 1
Обновление 20150527
Между тем доступный AWS SDK для JavaScript (в браузере) поддерживает Amazon S3, включая класс ManagedUpload, чтобы поддерживать множественные аспекты загрузки используемого варианта (подробнее см. предыдущее обновление). Теперь это может быть лучшим решением для вашего сценария, см., Например, Загрузка локального файла с помощью API файлов для краткого примера, в котором используется HTML5 File API в свою очередь - вводное сообщение в блоге Объявление управляющего загрузчика Amazon S3 в AWS SDK для JavaScript содержит более подробную информацию об этой функции SDK.
Обновление 20120412
Мой первоначальный ответ, по-видимому, пропустил главное, поэтому уточнить:
Если вы хотите сделать загрузку на основе браузера через простые формы HTML, вам будет ограничено использование операции POST Object, которая добавляет объект к указанному ведру с использованием форм HTML:
POST - это альтернативная форма PUT, которая позволяет загружать на основе браузера как способ размещения объектов в ведрах. Параметры, которые передаются в PUT через HTTP-заголовки вместо этого передаются как поля формы в POST в многокомпонентный/форматированный текст. [...]
Загрузка выполняется в одной операции здесь, поэтому не поддерживает приостановку/возобновление и ограничивает максимальный размер оригинального объекта размером 5 гигабайт (ГБ) или меньше.
Вы можете преодолеть оба ограничения только с помощью Используя API REST для загрузки многостраничных файлов вместо, который, в свою очередь, используется SDK, например, AWS SDK для PHP для реализации этой функции.
Для управления транзакцией, инициированной через браузер, очевидно, требуется сервер (например, EC2) (что позволяет вам облегчить S3 Bucket Policies и/или IAM Policies для управления доступом легко).
В качестве альтернативы может использоваться библиотека JavaScript и выполнение этой клиентской стороны, см., например, jQuery Upload Progress и AJAX file upload для исходного указателя. К сожалению, канонический JavaScript SDK для AWS не доступен (aws-lib на удивление даже не поддерживает S3) - видимо, некоторые вилки knox добавили многостраничную загрузку, см., например, slakis fork, я не использовал ни одного из них для используемого варианта.
Исходный ответ
Если вы можете загрузить [большие файлы] прямо на S3, как я могу обрабатывать пауза/резюме?
AWS SDK для PHP поддерживает загрузку больших файлов в Amazon S3 с помощью Низкоуровневый PHP API для загрузки многостраничных файлов:
AWS SDK для PHP предоставляет низкоуровневый API, который очень похож на API-интерфейс Amazon S3 REST для многостраничной загрузки (см. Использование API REST для Multipart Upload). Использовать низкоуровневый API, если вам нужно приостановить и возобновлять многостраничные загрузки, изменять размеры деталей во время загрузки или не выполнять заранее знайте размер данных. Используйте API высокого уровня (см. Использование PHP-API высокого уровня для загрузки многостраничных файлов), когда вы не выполняете имеют эти требования. [акцент мой]
Amazon S3 может обрабатывать объекты от 1 байта до 5 терабайт (TB), см. соответствующий вводный пост Amazon S3 - Ограничение размера объекта сейчас 5 TB:
[...] Теперь клиенты могут хранить чрезвычайно большие файлы как отдельные объекты, что значительно упрощает их хранение опыт. Amazon S3 делает бухгалтерию за кулисами для наших клиентов, поэтому теперь вы можете ПОЛУЧИТЬ этот большой объект, как и вы любой другой объект Amazon S3.
Чтобы хранить более крупные объекты, вы должны использовать новый API многостраничной загрузки, о котором я писал в прошлом месяце, чтобы загрузить объект в частей. [...]