Принудительная загрузка с php на Amazon S3 - PullRequest
13 голосов
/ 15 мая 2009

Я пытаюсь использовать http://code.google.com/p/amazon-s3-php-class/ для принудительной загрузки файлов из AWS S3. У меня есть mp3, который я хочу, чтобы люди «играли» или «скачивали». По умолчанию, когда вы получаете доступ к файлу непосредственно на s3, он начинает воспроизводиться в браузере. Мне нужно добавить опцию, чтобы фактически загрузить. Я гуглил и нашел ничего не придумал. Я концептуально знаю, что должно произойти, но не знаю, как это сделать php. Я знаю, что мне нужно изменить заголовки на Content-Disposition: attachment. Любая помощь будет принята с благодарностью.

Спасибо, Michael

Ответы [ 12 ]

0 голосов
/ 21 мая 2009

Я никогда не пробовал хостинг Amazon S3, но разве у вас нет доступа к использованию там файлов .htaccess? Затем вы можете установить Content-Type и Content-Disposition для всего каталога с помощью этой записи:

<IfModule mod_headers.c>
    <FilesMatch "\.(mp3)$">
            ForceType audio/mpeg
            Header set Content-Disposition attachment
    </FilesMatch>
</IfModule>
0 голосов
/ 15 мая 2009

php просто загрузит файл на сервер, а не на клиент. помните, php ничего не делает на клиенте, он просто возвращает содержимое (html, javascript, css, xml, что угодно ...)

[edit: добавлено для ясности]: php может обслуживать аудио контент, но вы хотите одновременно обслуживать веб-страницу и аудио. Чтобы получить такое поведение клиента, вы должны заставить клиента запрашивать файл на основе html или javascript веб-страницы.

Таким образом, вы должны получить клиент для загрузки файла. Например, на странице есть iframe с URL-адресом файла на s3. Используйте css, чтобы сделать iframe невидимым. Следует отрендерить страницу, скачать и воспроизвести mp3.

В противном случае, посмотрите, как использовать javascript для загрузки, когда страница загружается. Я не уверен, если это возможно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...