(HTML) Загрузите файл PDF вместо открытия их в браузере при нажатии - PullRequest
92 голосов
/ 22 июля 2011

Мне было интересно, как сделать ссылку на файл PDF скачиваемой, а не открывать ее в браузере? Как это делается в HTML? (Я бы предположил, что это делается через JavaScript или что-то).

Ответы [ 13 ]

2 голосов
/ 21 сентября 2012

Лучшим решением для меня было то, которое написал Ник в своем блоге

Основная идея его решения - использовать мод заголовков серверов Apache и отредактировать .htaccess, включив в него директиву FileMatch, которая заставляет все файлы * .pdf действовать как поток, а не как вложение. Хотя на самом деле это не связано с редактированием HTML (согласно первоначальному вопросу), оно само по себе не требует программирования.

Первая причина, по которой я предпочел подход Ника, заключается в том, что он позволил мне установить его для каждой папки, чтобы PDF-файлы в одной папке можно было по-прежнему открывать в браузере, а другим (те, которые мы хотели бы, чтобы пользователи редактировали, а затем -upload) для принудительной загрузки.

Я также хотел бы добавить, что в PDF есть возможность публиковать / отправлять заполняемые формы через API на ваши серверы, но это требует времени для реализации.

Вторая причина была в том, что время - это соображение. Написание обработчика PHP-файла для принудительного размещения содержимого в header () также займет меньше времени, чем API, но все же дольше, чем подход Ника.

Если вы знаете, как включить мод Apache и отредактировать .htaccss, вы можете получить это примерно через 10 минут. Требуется хостинг Linux (не Windows). Это может не подходить для всех целей, так как для настройки требуется высокоуровневый доступ к серверу. Таким образом, если вы сказали «доступ», это, вероятно, потому, что вы уже знаете, как делать эти две вещи. Если нет, проверьте блог Ника для получения дополнительных инструкций.

1 голос
/ 26 апреля 2014

Мне нужно было сделать это для файлов, созданных с динамическими именами в определенной папке и обслуживаемых IIS.

Это сработало для меня:

  • В IIS перейдите в эту папку и дважды щелкните заголовки ответа HTTP.
  • Добавить новый заголовок со следующей информацией:

    Name: content-disposition Value: attachment

(от: http://forums.iis.net/t/1175103.aspx?add+CustomHeaders+only+for+certain+file+types+)

1 голос
/ 22 июля 2011

Поведение должно зависеть от того, как настроен браузер для обработки различных типов MIME.В этом случае MIME-типом является application / pdf.Если вы хотите, чтобы браузер загрузил файл, вы можете попробовать принудительно установить другой тип MIME для файлов PDF.Я рекомендую против этого, поскольку пользователи должны выбирать, что произойдет, когда они откроют файл PDF.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...