Как сделать ссылку на PDF для скачивания

15 дек. 2010 г., 19:15:16
Просмотры: 17.2K
Голосов: 6

Как добавить ссылку на PDF в контенте, чтобы файл скачивался, а не открывался в окне браузера? (Я загрузила PDF в медиатеку и могу вставить ссылку, но не могу найти опцию, чтобы запретить открытие в браузере).

Спасибо,

Люси

0
Все ответы на вопрос 4
3
10

вы можете попробовать добавить это в ваш .htaccess:

<FilesMatch "\.(?i:pdf)$">
    # Принудительная загрузка файла
    ForceType application/octet-stream
    Header set Content-Disposition attachment
</FilesMatch>
15 дек. 2010 г. 22:56:24
Комментарии

это отлично и намного быстрее, чем все другие варианты. Как я могу использовать несколько типов файлов? Например, test.notebook с частью (?i:pdf)?

v3nt v3nt
23 авг. 2011 г. 13:35:28

похоже, можно сделать так (?i:(pdf|notebook))

Sébastien Méric Sébastien Méric
29 авг. 2011 г. 02:04:18

да - в конце концов я это выяснил! Спасибо, Себастьен...

v3nt v3nt
29 авг. 2011 г. 16:04:10
3

PDF-файл будет сохранён с MIME-типом application/pdf, поэтому если ваша тема содержит шаблонный файл application.php или pdf.php, который принудительно вызывает скачивание (или если вы проверяете MIME-тип в шаблоне attachment.php), вы можете принудительно заставить файл скачиваться.

Файл pdf.php, созданный в вашей теме следующим образом, решит задачу:

<?php  if (have_posts()) : while (have_posts()) : the_post();

$pdf_title = $post->post_title;
$uploads_dir = wp_upload_dir();
$attachment_src = get_post_meta( $post->ID, '_wp_attached_file', true );
$pdf_src = path_join( $uploads_dir['path'], $attachment_src );


 header("Pragma: public"); // требуется
 header("Expires: 0");
 header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
 header("Cache-Control: private",false); // необходимо для некоторых браузеров
 header("Content-Type: application/pdf");
 header("Content-Disposition: attachment; filename=\"".$pdf_title."\";" );
 header("Content-Transfer-Encoding: binary");
 header("Content-Length: ".filesize($pdf_src));
 ob_clean();
 flush();
 readfile("$pdf_src");


endwhile; endif;

?>

(Примечание: чтобы это работало, при вставке файла в запись через медиа-загрузчик, необходимо выбрать URL записи вместо URL файла в поле Ссылка URL перед вставкой в запись. Ссылка на имя файла будет следовать настройкам браузера, но, ссылаясь на URL записи WordPress, вы можете контролировать его поведение.)

16 дек. 2010 г. 20:36:52
Комментарии

Никогда не следует использовать guid записи в качестве URL. Это URL только потому, что это уникальная строка; он может так же легко измениться.

John P Bloch John P Bloch
17 дек. 2010 г. 23:47:24

Спасибо, я изменил свою функцию, чтобы она работала с метаданными '_wp_attached_file'.

goldenapples goldenapples
18 дек. 2010 г. 06:18:01

Вместо этого вы можете найти путь к PDF следующим образом: $pdf_src = get_attached_file($post->ID ); $bytes = filesize( $pdf_src );

Dipesh KC Dipesh KC
29 апр. 2013 г. 15:39:28
1

На самом деле это полностью зависит от браузера. Некоторые браузеры открывают PDF прямо в окне с помощью встроенного PDF-ридера (большинство используют плагин Adobe, Google Chrome имеет собственный). Однако если плагин отсутствует, браузер попытается скачать файл.

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

Если вы беспокоитесь, что пользователи не смогут вернуться на страницу после перехода по ссылке, добавьте атрибут target="_blank" к ссылке, и браузер откроет её в новой вкладке или окне. Иногда этого достаточно, чтобы вместо открытия файл начал скачиваться.

Например: <a href="http://site.url/document.pdf" target="_blank">Скачать PDF</a>.

15 дек. 2010 г. 19:22:07
Комментарии

На самом деле, "принудительная загрузка" полностью зависит от заголовков HTTP-ответа, отправляемых сервером, а не от браузера. Однако возможность отображения PDF в браузере зависит от самого браузера и установленных плагинов.

MrWhite MrWhite
24 янв. 2015 г. 14:34:18
0

Просто используйте атрибут download у тега <a>: https://www.w3schools.com/tags/att_a_download.asp

4 мар. 2021 г. 01:48:13