Возможный дубликат:
открыть диалоговое окно загрузки с php
У меня есть ссылка на моей странице, <a href='test.pdf'>(Test.pdf)</a>
. Когда я нажимаю на эту ссылку, откроется диалоговое окно загрузки, чтобы загрузить этот файл. Может ли кто-нибудь помочь мне в реализации этого в PHP?
благодаря
$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>
Это должно сделать это.
<a href="test.pdf">test.pdf</a>
В случае файла PDF большинство браузеров будут искать помощника (acrobat), чтобы загрузить его в браузере по умолчанию. Вы пытаетесь обойти это поведение по умолчанию, это мое предположение.
Самый простой способ сделать это (при условии, что вы находитесь на * nix box с apache) – сделать файл .htaccess в каталоге, в котором вы хотите получить этот результат, и добавить строку:
Приложение AddType / октет-поток .pdf
Это приведет к тому, что файл с расширением .pdf будет загружен по умолчанию. Вы даже можете иметь некоторые .pdf-файлы на загрузке страницы в браузере, а другие загружать с помощью директивы FilesMatch ( http://www.askapache.com/htaccess/using-filesmatch-and-files-in-htaccess.html ) ,
Я понимаю, что ваш оригинальный вопрос сказал: «Как мне это сделать с PHP», но я думал, что отправлю на случай, если вы ищете более простое и элегантное решение. Имейте в виду, что любые директивы, которые вы помещаете в файл .htaccess, также влияют на любые подкаталоги под ним.