Как передать файл из S3 в браузер? - PullRequest
0 голосов
/ 08 ноября 2011

В моем приложении я использую Zend_Service_Amazon_S3 для хранения некоторых больших медиа-файлов.Когда пользователь загружает файл, приложение сначала копирует файл на локальный сервер, и оттуда файл вместе с некоторыми заголовками для принудительной загрузки файла отправляется в браузер.

Есть ли способпозволить Amazon транслировать файл напрямую в браузер, не копируя весь файл на локальный сервер?В идеале приложение все еще может выбрать имя принудительно загруженного файла (который во многих случаях не совпадает с файлом на Amazon).

1 Ответ

2 голосов
/ 09 ноября 2011

Одним из решений является использование обратного прокси-сервера, который передает запрос в Amazon S3, но также переписывает заголовки ответа, чтобы изменить имя файла и принудительно загрузить файл.

Это избавит от необходимости делать локальную копию этого файла, но фактическая передача данных все равно будет проходить через ваш сервер.

Я предлагаю изучить Nginx для этого и, более конкретно, опции конфигурации proxy_pass и add_header .


Другим решением было бы сделать временную копию файла в S3 (используя вызов копирования объекта PUT, чтобы вам не нужно было передавать его на ваш сервер), а затем установить заголовки Content-Type и Content-Disposition на этот объект для принудительной загрузки.

Затем вы можете передавать эти файлы напрямую из S3 в браузер клиента, но вам нужно будет регулярно очищать их на S3, поскольку они не будут автоматически удаляться после завершения загрузки.

...