ダウンロードが発生すると、ダウンロードを引き起こす Web ページから html が追加されます。HTML を除外するにはどうすればよいですか?
3 に答える
私があなたを正しく理解していれば、それはよくある問題です。出力が発生する前に index.php (start/root/entry ファイル) の先頭で ob_start を使用して解決し、ダウンロードのために次のことを行います。
ob_end_clean();
header("Content-Type: application/octet-stream; ");
header("Content-Transfer-Encoding: binary");
header("Content-Length: ". filesize("thefileinquestion").";");
header("Content-disposition: attachment; filename=thefileinquestion");
$fp = fopen(thefileinquestion, "r");
while(!feof($fp)){
$buffer = fread($fp, 1024);
echo $buffer;
flush();
}
fclose($fp);
die();
アップデート
このob_start
コマンドは出力を (echo や printf などを介して) バッファリングし、実際のダウンロードの前にユーザーに送信されるのを防ぎます。よりもこのob_end_clean
動作を停止し、直接出力を再び許可します。HTH。
PHP ページからダウンロードするストリームを出力しようとしていることは理解していますか?
その場合は、HTML を含むページからそのコンテンツを出力せず、ダウンロード ストリームのみを出力する別の php ページにリダイレクトし、必要に応じてヘッダーを付けます。
ファイル ストリームが完了した後、追加のデータを出力していないことを確認してください。ファイル ストリームの終了後にページの実行を終了するには、exit() の呼び出しを使用します。終了 '?>' タグの後の文字 (改行など) も、ダウンロードの問題を引き起こす可能性があります。
ダウンロード スクリプトを独自のファイルに移動すると、1 つのことしかできないため、問題を見つけやすくなります。最後の改行を出力しないようにするために、この場合もスクリプトの最後にある終了 '?>' タグを省略できます。