Как создать ссылку, которая запускает загрузку файла? - PullRequest
6 голосов
/ 02 октября 2009

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

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

Например:

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

Похоже, что для этого нужно сочетание JavaScript и PHP.

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

Ответы [ 7 ]

7 голосов
/ 02 октября 2009

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

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

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

Дополнительная литература

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

6 голосов
/ 02 октября 2009

Если вы используете Apache, вы можете добавить это в свой .htaccess:

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

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

3 голосов
/ 21 марта 2014
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 и т. Д.), Без непосредственного открытия в новом браузере.

1 голос
/ 17 сентября 2013

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

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

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

1 голос
/ 02 октября 2009

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

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

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

0 голосов
/ 02 октября 2009

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

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

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

Например, в Firefox есть надстройка " PDF download ", которая предлагает пользователю выбор, что делать с всплывающим окном.

0 голосов
/ 02 октября 2009

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

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

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

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

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

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