我有一个数据表单,可将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) ;
答案 0 :(得分:0)
这是一个对我有用的简单脚本:
<?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'];
我使用file_get_contents()从文件系统中读取PDF文件,并将内容存储到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;