Если информация была полезной для вас, вы можете поблагодарить за труды Юmoney: 41001164449086

Как сделать чтобы при клике на PDF файл он скачивался, а не открывался в браузере

Я думаю многие из вас сталкивались с ситуацией когда при клике на PDF файл он открывался в окне браузера. Когда размер pdf файла не большой, то может быть это не так уж и плохо (хотя лично мне не нравиться мысль что pdf файлы открываются непосредственно в браузере), но что делать если размер файла десятки или даже сотни мегабайт? В этом случае логичнее дать возможность скачать файл.
Самое простое решение, которое напрашивается, это сжать pdf файл в zip или скажем в rar архив. Но результата от сжатия практически никакого, да и для многих людей последующее извлечение файла из архива вызывает сложности.

Итак, вариант который я предложу работает только на Apache серверах с включённым модулем mod_headers, благо большинство хостингов удовлетворяют этому условию, и сложностей возникнуть не должно.
Итак рецепт.
В самом корне сайта должен быть файл ''.htaccess'', именно так с точкой в начале. Если этого файла ещё нет, то создайте его.
В него необходимо добавить следующее содержимое:

<FilesMatch "\.(?i:pdf)$">
ForceType application/octet-stream
Header set Content-Disposition attachment
</FilesMatch>


Постараюсь объяснить что здесь написано.
Здесь говориться, что файлы удовлетворяющие регулярному выражению, т. е. файлы с расширением pdf (с любым регистром), будут восприниматься как поток и приложение. Запутанно? Наверное, но если коротко то именно так.
Все желающие могут почитать манул по Apache, а за одно освоить и регулярные выражения ;-)
После добавления этих строк при клике на pdf файл, браузер будет предлагать сохранить или открыть его, в общем будет вести себя так словно он работает с архивом.

Если у вас что-то не получилось, и файл продолжает открываться в браузере, оставляйте свои комментарии, по мере возможности постараюсь помочь.

Добавить комментарий


Если информация была полезной для вас, вы можете поблагодарить за труды Юmoney: 41001164449086