我需要使用fpdf库创建一个 pdf 文件并将其保存在我的 MySQL 数据库中的 blob 字段中。问题是,当我尝试从 blob 字段中检索文件并将其发送到浏览器进行下载时,下载的文件已损坏并且无法正确显示。
如果我立即将其发送到浏览器而不将其存储在数据库中,则可以正确显示相同的 pdf 文件,因此似乎某些数据在插入数据库时已损坏。
我的代码是这样的:
$pdf = new MyPDF(); //class that extends FPDF and create te pdf file
$content = $pdf->Output("", "S"); //return the pdf file content as string
$sql = "insert into mytable(myblobfield) values('".addslashes($content)."')";
mysql_query($sql);
存储pdf,像这样:
$sql = "select myblobfield from mytable where id = '1'";
$result = mysql_query($sql);
$rs = mysql_fetch_assoc($result);
$content = stripslashes($rs['myblobfield']);
header('Content-Type: application/pdf');
header("Content-Length: ".strlen(content));
header('Content-Disposition: attachment; filename=myfile.pdf');
print $content;
将其发送到浏览器进行下载。我究竟做错了什么?
如果我将代码更改为:
$pdf = new MyPDF();
$pdf->Output(); //send the pdf to the browser
该文件已正确显示,因此我认为该文件已正确生成并且问题出在数据库中的存储中。
提前致谢。