Принудительная загрузка через js или запрос
Можно ли принудительно загрузить через JS или Javascript, т.е. веб-страница не должна открывать файл на новой вкладке в браузере, но всплывать, чтобы пользователь мог выбрать eith "сохранить как" или открыть с помощью???
Ответы
Ответ 1
Вы не можете заставить это поведение JavaScript, HTTP-заголовки должны быть установлены на стороне сервера:
Content-disposition=attachment; filename=some.file.name
Способ решения проблемы - позволить вашему AJAX-методу перенаправить пользователя на URL-адрес PDF файла:
location.replace('path/to.pdf');
(Указанные выше HTTP-заголовки должны быть установлены для PDF файла)
Ответ 2
С появлением HTML5 вы можете просто использовать новую загрузку свойств в теге привязки.
Код будет выглядеть примерно так:
<a download="name_of_downloaded_file" href="path/to/the/download/file"> Clicking on this link will force download the file</a>
Он работает с последней версией Firefox и Chrome. Должен ли я упоминать, что я не проверял его в IE?: P
Отредактирован атрибут загрузки после комментария sstur
Ответ 3
динамическое создание ссылки и щелкните ее с атрибутом загрузки для загрузки силы как файл:
var anchor = document.createElement('a');
anchor.href = this.props.download_url;
anchor.target = '_blank';
anchor.download = this.props.file_name;
anchor.click();
Обратите внимание, что я даже не добавил его в DOM, поэтому он быстро.
Атрибут P.S download
не будет работать с IE. Но он просто откроет ссылку на новой вкладке.
http://caniuse.com/#feat=download
Ответ 4
Нет, это невозможно, и, слава Богу, это не так. В противном случае я оставлю вас в воображении того, какие файлы могут быть сохранены на вашем компьютере при посещении веб-сайта без вашего ведома.
Как отметил @Paul D. White в разделе комментариев, если вы хотите открыть файл inline (внутри браузера) с помощью связанной с ним программы по умолчанию, вы можете отправить сервер HTTP-заголовку Content-Disposition. Например:
Content-Disposition: inline; filename=foo.pdf
Ответ 5
Нет, это невозможно с JQuery/JavaScript.
Вам понадобится серверная сторона script, которая вернет вам файл с Content-Type
(HTTP Header), который заставит браузер загружать запрошенный файл. Возможным значением для Content-Type
будет application/force-download
.