プロが教える店舗&オフィスのセキュリティ対策術

PDFファイルをその場では開かせず、ダウンロードさせるコードを作成しています

header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename="' . basename($path_file) . '"');
header('Content-Length:' . $content_length);

ファイルをダウンロードさせること自体は成功しており、ファイル容量も間違ってないのですが
ダウンロード後に開こうとするとファイルが破損していて開くことができません。

また、ハイパーリンクから直接開かせた場合は問題なく表示できております。

原因の分かる方がいらっしゃいましたらアドバイスお願い致します。

A 回答 (2件)

もしかして、PHPによる コードの自動変換が走っていて、


バイナリファイルであるPDFファイル中をコンバートしているのかも。
readfile()するまえに、
mb_http_output( "pass" ) ;
を入れてみては。
    • good
    • 0
この回答へのお礼

ファイル出力時にechoが原因でゴミが交じっていたのが原因でした。
皆さまアドバイスありがとうございました。

お礼日時:2012/01/27 13:08

肝心のpdfを出力させる部分の表記がありませんが?

この回答への補足

ご指摘ありがとうございます、出力部分は下記の通りです

if (!stream_get_contents($path_file)) {
die("Cannot read the file(" . $path_file . ")");
}

readfile()を使用しても結果は同じでした。

よろしくお願い致します。

補足日時:2012/01/27 11:19
    • good
    • 0
この回答へのお礼

ご協力ありがとうございました!

お礼日時:2012/01/27 13:09

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!