Принудительная загрузка через разметку или JS - PullRequest
4 голосов
/ 01 февраля 2010

Предположим, у меня есть файл в CDN (Cloud Files from Rackspace) и статическая html-страница со ссылкой на этот файл. Можно ли как-нибудь принудительно загрузить этот файл (чтобы он не открывался в браузере - например, для mp3-файлов)?

Мы можем заставить наш сервер читать файл и установить соответствующий заголовок:

header("Content-Type: application/force-download")

, но у нас около 5 миллионов загрузок в месяц, поэтому мы бы предпочли, чтобы CDN позаботился об этом.

Есть идеи?

Ответы [ 4 ]

5 голосов
/ 01 февраля 2010

Нет способа сделать это в HTML или JavaScript. Теперь есть!(Иш. См. Ответ @ BruceAldrige ниже.)

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

К сожалению, я совершенно незнаком со службой облачных файлов Rackspace, так что я не знаю,разрешить это, ни как это сделать.Только что нашел страницу с декабря 2009 года, которая предлагает не подумать, к сожалению:

Облачные файлы не могут обслуживать файл с HTTP-заголовком «Content-Disposition: attachment».Следовательно, ссылка на скачивание, которая отлично работает в любой другой службе, может привести к тому, что браузер отобразит файл напрямую.Это подтвердили инженеры Rackspace.: - (

http://drupal.org/node/656714

Я знаю, что вы можете использовать сервис Amazon CloudFront, поскольку он поддерживается S3 (см., Например, http://blog.cloudberrylab.com/2009/06/how-to-set-custom-http-headers-for.html)

2 голосов
/ 11 февраля 2013
1 голос
/ 02 июня 2010

Да, вы можете сделать это через API облачных файлов. Использование метода stream позволяет вам передавать содержимое файлов при настройке собственных заголовков и т. Д.

0 голосов
/ 02 февраля 2010

Сумасшедшая идея: скачать через XMLHttpRequest и предоставить data: URL с типом контента, который вы хотите?: P

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