1

.txt タブ区切りファイルを作成するために作成した PHP スクリプトがあります。これを Web ブラウザに強制的にダウンロードする必要があります。これはすべて実行されますが、強制的にダウンロードされたソースとファイルを比較すると、余分な空白行が 2 行含まれています。コードは次のとおりです。

// Force download of the tab del .txt file to the web browser:

    header('Content-Type: application/download');
    header("Content-Disposition: attachment; filename=$tab_del_file");
    header("Content-Length: " . filesize($tab_del_file));

    $fp = fopen($tab_del_file, "r");
    fpassthru($fp);
    fclose($fp);

2 つのファイルを比較し、余分な空白行があることを示す Linux シェル コマンド: $ diff example.txt /tmp/example.txt 25a26,27

ダウンロードした example.txt を /tmp ディレクトリに sftp したので、サーバー上で diff を実行できました。ダウンロードしたバージョンに 2 つの空白行が追加されているのはなぜですか? また、その修正方法は何ですか? ありがとう!

4

3 に答える 3

2

PHP コード自体は問題ないように見え、新しい行が生成されないため、これには 1 つの理由しか考えられません。ファイルの最後に終了?>タグと追加の改行があります。

?>
<--- empty line
<--- empty line

php タグの外側のコンテンツは PHP によって解析されず、ブラウザに転送されるだけであることに注意してください。

?>解決策: 終了タグまたは余分な改行を削除します。私は通常、?>


ところで、私はこれに言及する必要があります:

$fp = fopen($tab_del_file, "r");
fpassthru($fp);
fclose($fp);

によって簡略化できます

readfile($tab_del_file);
于 2013-05-04T09:25:29.460 に答える
1

ほとんどの場合、終了の後に余分な空白行が?>あり、データと一緒にエコーされています。PHP ファイルの最後での終了?>は、常にオプションです。この種の問題を防ぐには、省略しておくことをお勧めします。

于 2013-05-04T09:26:04.010 に答える