使用 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?
1 回答
慕姐4208626
TA贡献1852条经验 获得超7个赞
您可以使用base64_encode()instead of addslashes()this 来防止由于转换而导致二进制数据出现问题。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();
该解决方案将未修改的二进制数据存储在数据库中。
- 1 回答
- 0 关注
- 133 浏览
添加回答
举报
0/150
提交
取消