правильные заголовки PHP для загрузки pdf-файлов
Я действительно пытаюсь заставить мое приложение открыть PDF-файл, когда пользователь нажимает на ссылку.
Пока тег привязки перенаправляется на страницу, которая отправляет заголовки, которые:
$filename='./pdf/jobs/pdffile.pdf; $url_download = BASE_URL . RELATIVE_PATH . $filename; header("Content-type:application/pdf"); header("Content-Disposition:inline;filename='$filename"); readfile("downloaded.pdf");
это, похоже, не работает, кто-нибудь успешно разбирал эту проблему в прошлом?
Пример 2 в w3schools показывает, чего вы пытаетесь достичь.
Важно заметить, что header () необходимо вызвать до отправки любого фактического вывода (в PHP 4 и более поздних версиях вы можете использовать буферизацию вывода для решения этой проблемы)
$name = 'file.pdf'; //file_get_contents is standard function $content = file_get_contents($name); header('Content-Type: application/pdf'); header('Content-Length: '.strlen( $content )); header('Content-disposition: inline; filename="' . $name . '"'); header('Cache-Control: public, must-revalidate, max-age=0'); header('Pragma: public'); header('Expires: Sat, 26 Jul 1997 05:00:00 GMT'); header('Last-Modified: '.gmdate('D, d MYH:i:s').' GMT'); echo $content;
В вашем коде есть некоторые вещи.
Во-первых, правильно напишите эти заголовки. Вы никогда не увидите ни одного сервера, отправляющего Content-type:application/pdf , заголовок Content-Type: application/pdf , spaced, с заглавными буквами и т. Д.
Имя файла в Content-Disposition – это только имя файла, а не полный путь к нему, и, несмотря на то, что я не знаю, является ли оно обязательным или нет, это имя заносится в » нет ‘ . Кроме того, ваш последний ‘ отсутствует».
Content-Disposition: inline подразумевает, что файл должен отображаться, а не загружаться. Вместо этого используйте attachment .
Кроме того, сделайте расширение файла в верхнем регистре, чтобы сделать его совместимым с некоторыми мобильными устройствами.
Все, что сказано, ваш код должен выглядеть следующим образом:
Content-Length является необязательным, но также важно, если вы хотите, чтобы пользователь мог отслеживать ход загрузки и определять, была ли загрузка прервана. Но при его использовании вы должны убедиться, что вы не будете отправлять что-либо вместе с файловыми данными. Удостоверьтесь, что нет ничего перед , Даже пустая строка.
У меня была такая же проблема в последнее время, и это помогло мне:
header('Content-Description: File Transfer'); header('Content-Type: application/octet-stream'); header('Content-Disposition: attachment; filename="FILENAME"'); header('Content-Transfer-Encoding: binary'); header('Expires: 0'); header('Cache-Control: must-revalidate, post-check=0, pre-check=0'); header('Pragma: public'); header('Content-Length: ' . filesize("PATH/TO/FILE")); ob_clean(); flush(); readfile(PATH/TO/FILE); exit();
Можете ли вы попробовать это, readfile нужен полный путь к файлу.
$filename='/pdf/jobs/pdffile.pdf'; $url_download = BASE_URL . RELATIVE_PATH . $filename; //header("Content-type:application/pdf"); header("Content-type: application/octet-stream"); header("Content-Disposition:inline;filename='".basename($filename)."'"); header('Content-Length: ' . filesize($filename)); header("Cache-control: private"); //use this to open files directly readfile($filename);
Вам нужно определить размер файла …
header('Content-Length: ' . filesize($file));
заголовок ( «Content-Disposition: встроенный; имя файла = ‘$ имя_файла»);
Php header PDF Open in Browser
Before going to learn the use of the PHP header function for a pdf file, we need to understand the header function, its properties, and how it works in short. The header function is basically used to send raw HTTP header to the browser (client).
Header Syntax:
header(Param 1 , Param 2, Param 3)
Param 1 — This requires a param of type string. It represents the header string. It’s required param to pass.
- Location: http://www.anyWebPage.com
- HTTP/1.1 404 Not Found
- Content-Type: application/pdf
Param 2 : It is an Optional param of boolean type. It indicates header replacement. Default value is true means it will replace previous.
Param 3: It is an Optional param of Integer type. It represents a response code.
Now let’s understand how we can use the header function to force browsers to prompt save data sent from the server. We will require the following certain headers to accomplish the PHP header pdf open in the browser.
Content Type : Content-Type header string required to signalize media type. It is used to tell browsers about the type of content being sent over.
- Media type is image/png or image/jpg for image per image extension.
- Media type is text/html to indicate an html file.
- Media type is application/pdf to indicate a pdf file.
Therefore to tell about pdf file we need to use header like header(‘Content-Type: application/pdf’);
Content Disposition: Content-Disposition header string used as inline to let the browser know that content passed needs to be inline meaning that it should be part of a web page.
Content-Disposition header string with attachment option is used to prompt use of the «Save as» dialog box.
Therefore to display pdf file on browser we can use header as header(‘Content-Disposition: inline; filename=»abc.pdf»‘);
Let’s explore the following useful ways to download or View pdf in the browser without downloading PHP with related concepts and example codes.
Scroll for More Useful Information and Relevant FAQs
Identifying a pdf file and upload it to folder
I´m using this php code to upload images to a folder but I would like to allow pdf files to be uploaded also, so I modified a little the code:
Correct image type.