Создать ссылку файла загрузки в 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, также влияют на любые подкаталоги под ним.