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
ファイルは正しく表示されているので、正しく生成されており、問題はデータベースへの保存にあると思います。
前もって感謝します。