Не удалось загрузить документ PDF в тип blob в моей базе данных php - PullRequest
0 голосов
/ 27 января 2019

У меня есть форма данных, куда я загружаю pdf-файлы в поле типа blob, моя проблема в том, что когда я хочу отобразить ее, она всегда выдает мне сообщение: Не удалось загрузить PDF-документ.это следовать моему коду:

     $code = mysqli_real_escape_string($conn , $_GET['doc']); 
 $q = mysqli_query($conn, ' SELECT document FROM saisie WHERE code = "'.$doc.'" ');  
 $r= mysqli_fetch_assoc($q);  
 $doc=$r['document'];

 header('Content-Type: application/pdf') ; 
 header('Content-Disposition: inline; filename="test.pdf"') ;
 header('Content-Transfer-Encoding: binary');
 header('Accept-Ranges: bytes');
 @readfile($doc) ;

1 Ответ

0 голосов
/ 27 января 2019

Вот простой скрипт, который отлично работает для меня:

<?php

$db = new PDO("mysql:host=localhost;dbname=test", "test","");

// Read the file and store as blob into DB
$filename = 'doc.pdf';
$fileContents = file_get_contents($filename);

$stmt = $db->prepare("insert into pdf_blob(filename, data) values (?, ?)");
$stmt->execute([$filename, $fileContents]);


// Read blob data from DB and output in browser
$stmt = $db->prepare("select filename, data from pdf_blob where filename = ? limit 1");
$stmt->execute([$filename]);
$result = $stmt->fetch();

header('Content-Type: application/pdf') ;
header('Content-Disposition: inline; filename="test.pdf"') ;
header('Content-Transfer-Encoding: binary');
header('Accept-Ranges: bytes');

echo $result['data'];

Я читаю PDF-файл из файловой системы с помощью file_get_contents () и сохраняю содержимое в MySQL BLOBколонка.После этого я читаю те же данные из БД и просто использую echo для вывода.Объявление заголовка точно такое же, как и в вашем коде.

Хотя я использую здесь PDO вместо mysqli , это, вероятно, не должно иметь значения.

Вот мое определение таблицы:

CREATE TABLE `pdf_blob` (
    `id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,
    `filename` VARCHAR(50) NOT NULL,
    `data` BLOB NOT NULL,
    PRIMARY KEY (`id`)
) ENGINE=InnoDB;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...