ホームページ  >  記事  >  バックエンド開発  >  Readfile ファイルのダウンロードに関連する問題、効果的な解決策があれば、追加ポイントが掲載されます

Readfile ファイルのダウンロードに関連する問題、効果的な解決策があれば、追加ポイントが掲載されます

WBOY
WBOYオリジナル
2016-06-13 13:45:23897ブラウズ

Readfile ファイルのダウンロードの問題、効果的な解決策があれば、追加ポイントが掲載されます
皆さん、こんにちは。今、私たちのプロジェクトはかなり厄介な問題に遭遇しています。 readfile を使用して画像ファイルをダウンロードする場合、ファイルの先頭に以前より 1 桁 (0x0A) が追加されます。UEdit を使用してファイルの先頭の 16 進数を削除すると、ファイルを正しく読み取ることができます。

ソースコードは次のとおりです:

PHP コード
<!--

Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

-->

<?php
$file = 'test_img.bmp';

if (file_exists($file)) {
    header('Content-Description: File Transfer');
    header('Content-Type: application/octet-stream');
    header('Content-Disposition: attachment; filename='.basename($file));
    header('Content-Transfer-Encoding: binary');
    header('Expires: 0');
    header('Cache-Control: must-revalidate');
    header('Pragma: public');
    header('Content-Length: ' . filesize($file));
    ob_clean();
    flush();
    readfile($file);
    exit;
}
?>






ダウンロードしたファイルは次のように元のファイルと比較されます:


以前のサーバーではコードの実行に問題はありませんでしたが、プロジェクトのオペレーティング サポート環境が変更されたとき (オペレーティング システム/Apache/php のバージョンが異なる場合があります)、すべてのコードをチェックしました。ドキュメントはオンラインにありません。この問題の解決を手伝ってください。よろしくお願いします。

効果的な解決策があれば、追加のポイントとステッカーが与えられます。


-----解決策---------
上の階の広告。 。 。

readfile で読み込んだファイルにこの 0a はありますか?
------解決策---------
余分な文字列がわかったので、それをカットするだけですオフ
------解決策------------------
0a - 改行記号 - "n"; 読み取ったファイルのエンコーディングが gbk であるかどうかを確認します。一部のファイルには utf-8 形式に変更できるかどうかを確認することをお勧めします。読み取ったファイル内で改行記号を使用するか、読み取った内容を直接トリミングします。
------解決策------------------
Discuss

0a-改行記号-"n"; ファイルの読み取りに使用するエンコーディングが gbk であるかどうかを確認することをお勧めします。 utf-8 形式に変更できます。読み取ったファイルに改行記号があるかどうかを確認するか、読み取った内容を直接トリミングします
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。