Указанные выше php-скрипты будут работать нормально, но главный недостаток заключается в том, что каждый раз, когда посетитель вашего сайта запрашивает файл, ваши собственные серверы загружают его из S3 и затем передают эти данные в браузер. , Для сайтов с низким трафиком это, вероятно, не имеет большого значения, но для сайтов с высоким трафиком вам определенно нужно избегать запуска всего через ваши собственные серверы.
К счастью, есть довольно простой способ настроить ваши файлы для принудительной загрузки с S3. И вы совершенно правы - вы просто хотите установить тип контента и расположение контента (просто настройка контента размещения будет работать в некоторых браузерах, но настройка обоих должна работать во всех браузерах).
В этом коде предполагается, что вы используете PHP-класс Amazon S3 из Undesigned:
<?php
// set S3 auth and get your bucket listing
// then loop through the bucket and copy each file over itself, replacing the "request headers":
S3::copyObject($bucketName, $filename, $bucketName, $filename, "public-read", array(), array("Content-Type" => "application/octet-stream", "Content-Disposition" => "attachment"));
?>
Теперь все ваши файлы будут принудительно загружены. Вам может потребоваться очистить кэш, чтобы увидеть изменения. И, очевидно, не делайте этого ни с одним файлом, который вы действительно хотите загрузить «встроенным» в браузер.
Приятной особенностью этого решения является то, что приложения, которые загружают медиафайлы напрямую (например, mp3-плеер во Flash), не заботятся о типе контента или расположении контента, поэтому вы все равно можете воспроизводить файлы в браузер, а затем ссылку, чтобы загрузить этот же файл. Если пользователь уже завершил загрузку файла во флэш-памяти, он, скорее всего, все еще будет иметь его в своем кэше, что означает, что его загрузка будет очень быстрой и даже не потребует дополнительных затрат на пропускную способность от S3.