2010-08-29 5 views
10

У меня есть ссылка на файл PDF на моей странице.HTML: force PDF скачать

Safari открывает файл pdf непосредственно на веб-сайте. Я бы хотел его загрузить.

Я попытался добавить элемент target="_blank" в <a>, но он не работает, если всплывающие окна отключены в настройках браузера.

Как я могу это решить?

благодаря

ответ

8

Чтобы сделать это, вам необходимо изменить заголовки для .PDF файлов.

Таким образом, в вашем .htaccess, вам нужно сделать так:

AddType application/octet-stream .pdf 
+1

Использование контент-диспозиция, не послать «Я не знать, что это «заголовок вместо« Это PDF » – Quentin

+0

Этот метод был описан в AskApache: http://www.askapache.com/htaccess/ultimate-htaccess-file-sample.html – shamittomar

+0

Автор этого синтаксиса e, похоже, не является аффилированным с Apache Foundation, поэтому название его немного пахнет. В нем довольно много, и я тоже не согласен. – Quentin

8

Вам нужно установить заголовок в Content-Disposition HTTP в attachment для этого файла.

Content-Disposition: attachment; filename=test.pdf 

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

+0

что делать, если у меня много файлов? – aneuryzm

+0

Но он не создает файл PDF или передает его через серверный скрипт. Он просто дает ссылку '' для ее загрузки. – shamittomar

+0

Как сказал Дарин, вы просто настраиваете свой сервер, но зависит от того, какой сервер вы используете. Например, http://www.thingy-ma-jig.co.uk/blog/06-08-2007/force-a-pdf-to-download. – Quentin

1

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

<?php 
header('Content-type: application/pdf'); 
header('Content-Disposition: attachment; filename="downloaded.pdf"'); 
readfile('original.pdf'); 
?> 

Edit:

$file = $_GET['file']; 
readfile($file."pdf"); // Before doing this, check whather the user have permission to download that file. 

называют сценарий: download.php?file=document загрузит document.pdf

+1

Лучше использовать конфигурацию сервера, если вы имеете дело со статическими файлами. Это проще. – Quentin

+1

Что делать, если он находится на общедоступном хостинге? – Youssef

+0

Есть ли какой-то хостинг на базе Apache настолько плохой, что он не позволяет вам устанавливать заголовок содержимого с настройками конфигурации Apache? – Quentin

Смежные вопросы