Insert/Save 将使用 FPDF 创建的 pdf 存入数据库

Insert/Save a pdf created using FPDF into the database

使用 fpdf 库生成 PDF 文件并将文件插入数据库。

我正在使用以下代码:

$content = $pdf->Output($pname.'', 'S');

$sql = "INSERT into data(name) values('".addslashes($content)."')";

if ($conn->query($sql) === TRUE) {
    echo "success";

} else {
    echo "Error: ";
}

$conn->close();

但是使用这个,保存在数据库中的文件是二进制格式而不是 PDF 格式,下载后似乎不正确...

如何解决此问题并将我的文件保存到扩展名为 .pdf 的数据库中?

您可以使用 base64_encode() 而不是 addslashes() 这可以防止由于转换而导致二进制数据出现问题。从数据库读取时,您需要使用 base64_decode() 来扭转这一局面。

更好的选择是在数据库中使用 BLOB 列和 PHP 数据库驱动程序的 LOB 功能。对于 PDO,这将是这样的:

$pdo = new \PDO(...);
$fp = fopen('data://' . $content, 'rb');
$stmt = $pdo->prepare("insert into data (name) values (?)");
$stmt->bindParam(1, $fp, PDO::PARAM_LOB);
$stmt->execute();

此解决方案在数据库中存储未修改的二进制数据。