<?php
mysql_connect('localhost','root','');
mysql_select_db('pdf');
require('fpdf.php');
if(isset($_POST['submit'])){
$name = $_POST['name'];
$email = $_POST['email'];
$comment = $_POST['comment'];
$url = $_POST['url'];
$pdf=new FPDF();
$pdf->AddPage();
$pdf->Image('logo.png',18,13,33);
$pdf->SetFont('Arial','B',14);
$pdf->Cell(50,10, $name,1,1);
$pdf->Cell(50,10, $email,1,7);
$pdf->Cell(50,10, $url,1,1);
$pdf->Cell(50,10, $comment,1,1);
$pdf->SetFont('Arial','B',7);
$pdf->SetFont('Arial','B',6);
$pdf_name=$pdf->Output("","S");
if(isset($_POST['submit'])){
mysql_query("INSERT INTO pdf VALUES('','".mysql_real_escape_string($pdf_name)."')");
echo "insert successful!";
}
}
?>
&#13;
<?php
mysql_connect('localhost','root','');
mysql_select_db('pdf');
$query=mysql_query("SELECT * FROM pdf WHERE id='11'");
$row=mysql_fetch_assoc($query);
$content = $row['pdf_file'];
header('Content-Type: application/pdf');
header("Content-Length: ".strlen(content));
print $content;
?>
&#13;
这是我显示保存为blob的pdf文件的部分,但它返回错误,无法显示该文件。
答案 0 :(得分:0)
将数据插入Db时出现问题,
如果你将blob数据(或二进制数据)插入sql那么最好不要用来转义字符串。因为可以通过用户可以上传的pdf进行sql注入,但是你自己生成PDF,所以做sql禁令的风险很高(可能是0)。
mysql_query("INSERT INTO pdf VALUES('','".mysql_real_escape_string($pdf_name)."')");
到
mysql_query("INSERT INTO pdf VALUES('','".$pdf_name."')");
如果您需要使用base64_encode来保持数据不会出现任何类型的字符问题,这是保持Blob数据或在网络中传输数据的常用方法。为了得到它,请使用base64_decode。
即,如果要将数据插入到db中,请使用base64_encode(),而在从db中选择数据后,必须使用base64_decode()