Сценарий php, который вы упомянули, будет работать нормально, но главный недостаток в том, что каждый раз, когда посетитель вашего сайта запрашивает файл, ваши собственные серверы загружают его из S3 и затем передают эти данные в браузер. Для сайтов с низким трафиком это, вероятно, не имеет большого значения, но для сайтов с высоким трафиком вам определенно нужно избегать запуска всего через ваши собственные серверы.
К счастью, есть довольно простой способ настроить ваши файлы для принудительной загрузки с S3. Вы просто хотите установить тип содержимого и расположение содержимого (просто настройка размещения содержимого будет работать в некоторых браузерах, но настройка обоих должна работать во всех браузерах).
В этом коде предполагается, что вы используете PHP-класс Amazon S3 из Undesigned:
"application / octet-stream", "Content-Disposition" => "attachment"));
?>
Теперь все ваши файлы будут принудительно загружены. Вам может потребоваться очистить кэш, чтобы увидеть изменения. И, очевидно, не делайте этого ни с каким файлом, который вы действительно хотите загрузить «встроенным» в браузер.
Приятной особенностью этого решения является то, что приложения, которые загружают медиафайлы напрямую (например, mp3-плеер во Flash), не заботятся о типе контента или расположении контента, поэтому вы все равно можете воспроизводить файлы в браузер, а затем ссылку, чтобы загрузить этот же файл. Если пользователь уже завершил загрузку файла во флэш-памяти, он, скорее всего, все еще будет иметь его в своем кэше, что означает, что его загрузка будет очень быстрой и даже не потребует дополнительных затрат на пропускную способность от S3.