使用 fpdf 庫生成 PDF 文件并將文件插入數(shù)據(jù)庫。我正在使用以下代碼:$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();但是使用這個,保存在數(shù)據(jù)庫中的文件是二進(jìn)制格式而不是 PDF 格式,下載后似乎不正確......我該如何解決這個問題并讓我的文件以擴(kuò)展名保存到數(shù)據(jù)庫中.pdf?
1 回答

慕姐4208626
TA貢獻(xiàn)1852條經(jīng)驗 獲得超7個贊
您可以使用base64_encode()instead of addslashes()this 來防止由于轉(zhuǎn)換而導(dǎo)致二進(jìn)制數(shù)據(jù)出現(xiàn)問題。base64_decode()從數(shù)據(jù)庫讀取時,您需要通過使用來扭轉(zhuǎn)這一局面。
更好的選擇是在您的數(shù)據(jù)庫中使用 BLOB 列和 PHP 數(shù)據(jù)庫驅(qū)動程序的 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();
該解決方案將未修改的二進(jìn)制數(shù)據(jù)存儲在數(shù)據(jù)庫中。
- 1 回答
- 0 關(guān)注
- 160 瀏覽
添加回答
舉報
0/150
提交
取消