使用 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 關注
- 162 瀏覽
添加回答
舉報
0/150
提交
取消