pdf-файл, сохраненный как источник текущей страницы

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

Я пробовал различные исправления, найденные в stackoverflow, но это не помогает.

Я пробовал приложение AddType/octet-stream .pdf в htaccess, а также ForceType. Пробовал исправление php здесь: Как сделать PDF-файл загружаемым в HTML ссылка? и прохождение через php с этим:

header("Content-disposition: attachment; filename=filename.pdf");
header("Content-type: application/pdf");
readfile("filename.pdf");

а затем ссылка на файл php, все то же самое.

что я делаю неправильно и какая информация вам нужна, чтобы лучше понять это?


person xerr0n    schedule 17.07.2015    source источник


Ответы (3)


У вас могут быть серверные ошибки для проверки (и отладки), попробуйте это

  <?php
     $file = ABSOLUTE_PATH_WHERE_PDF_IS_STORED.'/my.pdf'; //replace *ABSOLUTE_PATH_WHERE_PDF_IS_STORED* with your path

     if (file_exists($file)) {
         header('Content-Description: File Transfer');
         header('Content-Type: application/octet-stream');
         header('Content-Disposition: attachment; filename='.basename($file));
         header('Expires: 0');
         header('Cache-Control: must-revalidate');
         header('Pragma: public');
         header('Content-Length: ' . filesize($file));
         readfile($file);
         exit;
  } else {
      die("FILE [".$file."]" don't exists!");
  }
 ?>
person donald123    schedule 17.07.2015
comment
используя это, он дает ответ штампа, т.е. файл не существует. - person xerr0n; 17.07.2015
comment
Исправление: при правильном использовании этого кода абсолютный путь был добавлен неправильно в первый раз, поэтому браузер загружает файл, который является html-файлом (точнее, исходным кодом на главной странице) - person xerr0n; 17.07.2015

Итак, я обнаружил проблему, которая, конечно, довольно очевидна: я неправильно связал файлы, и, поскольку я использую cms, он отправил исходный код главной страницы (поведение по умолчанию). Что характерно, атрибут загрузки html5 все равно не работает.

Спасибо Donald123 и PKa за ответы.

person xerr0n    schedule 20.07.2015

Вы можете использовать тег с загрузкой атрибута

<a href="path/to/file/*.pdf" download>Download this pdf</a>

Это быстрый способ сделать это.

person PKa    schedule 17.07.2015
comment
1) загрузка является атрибутом html5 и не поддерживается во всех браузерах! 2) это решает не вопрос ОП - person donald123; 17.07.2015
comment
как он сказал в первой строке, он хочет сделать файлы PDF загружаемыми. Я просто показываю ему простой способ сделать это. - person PKa; 17.07.2015
comment
использование HTML5 или более старой версии простой ссылки на него дает тот же результат. - person xerr0n; 17.07.2015