Дополнительно
Как сделать PDF файл загружаемым в HTML ссылке?
Я даю ссылку на файл pdf на моей веб-странице для скачивания, как показано ниже
<a href="myfile.pdf">Download Brochure</a>
Проблема в том, что когда пользователь нажимает на эту ссылку, то
- Если у пользователя установлен Adobe Acrobat, то он открывает файл в том же окне браузера в Adobe Reader.
- Если Adobe Acrobat не установлен, то появляется всплывающее окно для загрузки файла.
Но я хочу, чтобы он всегда всплывал перед пользователем для загрузки, независимо от того, установлен ли "Adobe Acrobat" или нет.
Пожалуйста, подскажите, как я могу это сделать?
119
14
Это распространенная проблема, но мало кто знает, там'ы простой HTML 5 Решение:
Где newfilename является предложенным именем для пользователя, чтобы сохранить файл. Или это будет по умолчанию к имени файла на сервере, если вы оставите его пустым, как это:
Совместимость: я проверил это в Firefox 21 и железа, оба работали нормально. Он не может работать на HTML5-несовместимые или устаревшие браузеры. Единственный браузер, я проверил, что это'скачать t сила то есть...
Проверка совместимости здесь: http://caniuse.com/#feat=download
Вместо ссылки на файл .PDF сделайте что-то вроде
которое выводит пользовательский заголовок, открывает PDF (бинарно безопасный) и печатает данные в браузер пользователя, после чего он может выбрать сохранение PDF, несмотря на настройки браузера. pdf_server.php должен выглядеть следующим образом:
PS: и, очевидно, выполните некоторые проверки на вменяемость переменной "file", чтобы предотвратить кражу ваших файлов, например, don't accept file extensions, deny slashes, add .pdf to the value
Дон'т петли через каждую строку файла. Использовать функцию ReadFile вместо того, чтобы ее быстрее. Это с сайта на PHP: http://php.net/manual/en/function.readfile.php
Убедитесь в том, чтобы санировать свой сделать переменную, как кто-то может скачать некоторые файлы PHP...
Вместо того, чтобы использовать php-скрипт, чтобы прочитать и очистить файл, это's более аккуратно переписать заголовка
.реврайт
. Это позволит сохранить и "хороший" и файл myfile по URL (.в формате PDF
вместоскачать.РНР?файл myfile
).Я нашел способ сделать это с обычный HTML и JavaScript/jQuery, которые изящно деградирует. Испытания в IE7-10, сафари, хром, и ФФ:
HTML-код для ссылка для скачивания:
jQuery (в чистом JavaScript код будет более многословен), что имитирует нажатие на ссылку после небольшой задержки:
Чтобы сделать это более надежным, вы можете добавить обнаружение возможностей HTML5 и если это's не есть затем использовать окно
.открыть ()
, чтобы открыть новое окно с файлом.Есть более простой способ в HTML5: добавить атрибут
скачать
.Он поддерживается большинством современных браузеров.
Это ключевой момент:
Content-type application/x-pdf-document или application/pdf передается при отправке PDF файла. Adobe Reader обычно устанавливает обработчик для этого типа MIME, поэтому браузер будет передавать документ в Adobe Reader при получении любого из типов MIME PDF.
Я знаю, что я очень поздно ответить на это, но я нашел хак, чтобы сделать это в JavaScript.
Здесь'с другой подход. Я предпочитаю, вместо того чтобы полагаться на поддержку браузером, и решения этой проблемы на уровне приложения, чтобы использовать веб-логику сервера.
Если вы используете Apache, и может положить .htaccess файл в соответствующий каталог, вы можете использовать код ниже. Конечно, вы могли бы поставить это в httpd.conf как хорошо, если у вас есть доступ к этому.
Директива FilesMatch находится всего в regex, так что он может быть установлен как отдельно, как вы хотите, или вы могли бы добавить в другие расширения.
Строка заголовка делает то же самое, что первая строка в приведенном выше PHP-скрипты. Если вам нужно установить контент-Тип линии так же, вы могли бы сделать это таким же образом, но я еще'т найти то, что надо.
Попробуйте это:
в
<а href="и pdf_server_with_path.РНР?файл=pdffilename&путь=в HTTP://myurl.я на COM/путь mypath/&;>скачать мою книгу</а>
Код внутри pdf_server_with_path.php это:
Мне моя решена, используя полный URL-адрес файла PDF (вместо того чтобы просто положить имя файла или место, в рот): а href="и домен . ком/формат PDF/именем.PDF файл" и
если вам нужно ограничить скорость загрузки, используйте этот код !!
Для получения более подробной информации нажать здесь
В приложении Ruby on Rails (особенно с использованием таких компонентов, как гем Prawn и плагин Prawnto Rails) это можно сделать немного проще, чем в полноценном скрипте (как в предыдущем примере с PHP).
В вашем контроллере:
Часть render :layout => false говорит браузеру открыть запрос "Хотите скачать этот файл? " вместо попытки рендеринга PDF. Тогда вы сможете нормально ссылаться на файл: http://mysite.com/myawesomepdf.pdf.