Как создать ссылку, которая запускает загрузку файла?

Когда пользователь нажимает ссылку «Загрузить PDF», я хотел бы, чтобы появилось приглашение к загрузке, и чтобы пользователь мог загрузить файл.

В настоящее время пользователь просто переносится на адрес файла PDF.

Например:

<a..[what goes here??]..>Download PDF</a> 

Кажется, что для этого требуется сочетание JavaScript и PHP.

Может ли кто-нибудь привести пример?

Solutions Collecting From Web of "Как создать ссылку, которая запускает загрузку файла?"

Если вы находитесь в Apache, вы можете удалить его в свой .htaccess:

 <Files *.pdf> Header set Content-Disposition attachment </Files> 

Это отправит все документы PDF в виде загрузок. mod_headers должен быть включен.

Перенаправление на страницу PHP с этим кодом на нем:

 <?php header('Content-disposition: attachment; filename=movie.mpg'); header('Content-type: video/mpeg'); readfile('movie.mpg'); ?> 

ваш код <a href должен будет указывать на определенную страницу, а readfile будет вызывать ваш ресурс

дальнейшее чтение

Как примечание, я согласен с тем, что вы не должны переопределять настройки браузеров, но иногда, когда босс спрашивает, вам просто нужно сделать.

 You can also use the following code: <?php $file = filter_input(INPUT_GET, 'file'); $filename = basename($file); header("Content-Type: application/force-download"); header("Content-Disposition: attachment; filename=\"{$filename}\";"); readfile("your file path {$file}"); ?> 

Это вызовет любые расширения файлов, такие как (.pdf, .docx, .zip, .csv, .txt, .html, .php и т. Д.) Без прямого открытия в новом браузере.

Вы можете заставить браузер сохранить связанный контент, добавив HTTP-заголовок в ответ веб-сервера:

 Content-Disposition: attachment; filename=<default filename to save as> 

С другой стороны, я действительно не вижу смысла в переопределении конфигурации браузера пользователя, что обычно говорит о том, что PDF-документы должны по умолчанию открываться в браузере, открываться в отдельном средстве просмотра PDF или сохраняться на диске.

Вы можете использовать атрибут download HTML5 на свой тег.

 <a href="http://love4cats.com/kitten-catalogue.pdf" download>Download the CATalogue</a> 

Вы должны проверить свою аналитику и убедиться, что ваш целевой браузер поддерживает этот атрибут. См. Страницу входа caniuse.com для поддержки браузера.

Я не верю, что есть волшебное решение javascript / PHP для вашей проблемы, ванильный HTML:

 <a href="docco.pdf" title="this is a link to a pdf">download the PDF</a> 

будет делать то, что требуется, он направит браузер на запрос ресурса «docco.pdf», это зависит от браузера (и любых плагинов), чтобы что-то сделать с этим.

Например, есть Firefox-аддон « Загрузка PDF », который предлагает пользователю выбор того, что делать со всплывающим окном.

Неясно, что вы подразумеваете под

В настоящее время пользователь просто переносится на адрес файла PDF.

Но я предлагаю простой подход:

 <a href='http://example.com/download.pdf'>Download PDF</a> 

Выбор загрузки или открытия файла – это больше настройка браузера.