0

ダウンロードが発生すると、ダウンロードを引き起こす Web ページから html が追加されます。HTML を除外するにはどうすればよいですか?

4

3 に答える 3

4

私があなたを正しく理解していれば、それはよくある問題です。出力が発生する前に 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。

于 2009-06-15T23:15:11.090 に答える
1

PHP ページからダウンロードするストリームを出力しようとしていることは理解していますか?

その場合は、HTML を含むページからそのコンテンツを出力せず、ダウンロード ストリームのみを出力する別の php ページにリダイレクトし、必要に応じてヘッダーを付けます。

于 2009-06-15T23:12:03.483 に答える
1

ファイル ストリームが完了した後、追加のデータを出力していないことを確認してください。ファイル ストリームの終了後にページの実行を終了するには、exit() の呼び出しを使用します。終了 '?>' タグの後の文字 (改行など) も、ダウンロードの問題を引き起こす可能性があります。

ダウンロード スクリプトを独自のファイルに移動すると、1 つのことしかできないため、問題を見つけやすくなります。最後の改行を出力しないようにするために、この場合もスクリプトの最後にある終了 '?>' タグを省略できます。

于 2009-06-15T23:17:28.150 に答える