Создать ссылку файла загрузки в PHP
Возможный дубликат:
открыть диалог загрузки с php
У меня есть ссылка на моей странице: <a href='test.pdf'>(Test.pdf)</a>
.
Когда я нажимаю на эту ссылку, откроется диалоговое окно загрузки, чтобы загрузить этот файл.
Может ли кто-нибудь помочь мне в реализации этого в PHP?
спасибо
Ответы
Ответ 1
$filename = 'Test.pdf'; // of course find the exact filename....
header('Pragma: public');
header('Expires: 0');
header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
header('Cache-Control: private', false); // required for certain browsers
header('Content-Type: application/pdf');
header('Content-Disposition: attachment; filename="'. basename($filename) . '";');
header('Content-Transfer-Encoding: binary');
header('Content-Length: ' . filesize($filename));
readfile($filename);
exit;
Назовите вышеуказанный файл как download.php
HTML:
<a href="download.php">Test.pdf</a>
Это должно сделать это.
Ответ 2
<a href="test.pdf">test.pdf</a>
Ответ 3
В случае файла PDF большинство браузеров будут искать помощника (acrobat), чтобы загрузить его в браузере по умолчанию. Вы пытаетесь обойти это поведение по умолчанию, это мое предположение.
Самый простой способ сделать это (при условии, что вы находитесь на * nix поле с apache) - сделать файл .htaccess в каталоге, который вы хотите получить, и добавить строку:
Приложение AddType/октет-поток .pdf
Это приведет к тому, что любой файл с расширением .pdf будет загружен по умолчанию. Вы даже можете иметь некоторые .pdf файлы на загрузке страницы в браузере, а другие - с помощью директивы FilesMatch (http://www.askapache.com/htaccess/using-filesmatch-and-files-in-htaccess.html).
Я понимаю, что ваш оригинальный вопрос сказал: "Как мне это сделать с PHP", но я думал, что опубликую его на случай, если вы ищете более простое и элегантное решение. Имейте в виду, что любые директивы, которые вы помещаете в файл .htaccess, также влияют на любые подкаталоги под ним.