Как мне принудительно загрузить с HTML / JavaScript? - PullRequest
9 голосов
/ 19 февраля 2010

У меня есть ссылка, и, если пользователь щелкает ее, мне нужно выполнить 2 действия:

  • Правильный ответ HTTP отправляется пользователю (особенно с Content-Type: video/mp4)
  • и видео файл автоматически начнет загрузку.

Я видел что-то подобное с PHP, но возможно ли это только с HTML / JavaScript?

Ответы [ 3 ]

41 голосов
/ 14 июня 2012

вы можете использовать атрибут загрузки

<a href="http..." download></a>

или указать имя файла, используя

<a href="http..." download="filename.pdf"></a>

см. Подробнее: https://developer.mozilla.org/en/HTML/element/a#attr-download

2 голосов
/ 19 февраля 2010

Автоматически будет во многом зависеть от браузера и его параметров.Но вы можете сказать браузеру, что вы хотите, чтобы произошло (что он затем дважды проверит у пользователя) через заголовок Content-Disposition в ответе.Например, установив его на attachment;filename=blah.mp4, в большинстве браузеров пользователю будет предложено загрузить его (используя это имя файла), даже если обычно браузер пытался бы отображать / воспроизводить контент в своем собственном интерфейсе.Смотрите ссылку для деталей.(Загрузка, вероятно, используется по умолчанию для файлов mp4, но это зависит от пользователя; я нахожу это полезным, предлагая ссылки для загрузки файлов HTML.)

Вы можете установить заголовок через конфигурацию на своем веб-сервере, если вы 'не использовать сценарии на стороне сервера (как вы сказали, что нет).Например, в Apache вы будете использовать правило, соответствующее URL-адресу этих видеофайлов, и использовать директиву Header .

2 голосов
/ 19 февраля 2010

Нет, это невозможно (по крайней мере, для значений JavaScript, ограниченных клиентским JavaScript).

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

Вы можете установить этот заголовок, используя JavaScript на стороне сервера или(в значительной степени) любая другая среда на стороне сервера.

...