ホームページ  >  記事  >  バックエンド開発  >  ダウンロードしたファイルが破損しているのはなぜですか? 誰か助けていただけますか?

ダウンロードしたファイルが破損しているのはなぜですか? 誰か助けていただけますか?

WBOY
WBOYオリジナル
2016-06-23 13:39:241502ブラウズ

関数 f($file_name,$file_path){
$file_name=$_SERVER['DOCUMENT_ROOT'].$file_path.$file_name;
$file_path=iconv("utf-8","gb2312",$file_name); if(!file_exists($file_path))
// if(!file_exists($file_name))
{
echo "存在しません"
return;
}
$fp=fopen($file_path,"r");
$file_size=filesize($file_path);

header("Content-type: application/octet-stream")
header("Accept-Length:$"); file_size") ;
header("Content-Disposition:attachment;filename=".$file_name);
$buffer=1024;
while(!feof($fp))
{
$file_data=fread($fp,$
echo $file_data;
}
fclose($fp);
ダウンロードしたファイルが破損しているのはなぜですか??破損していますか??
ダウンロードしたファイルが破損しているのはなぜですか??
ダウンロードしたファイルが破損しているのはなぜですか??



テスト後、問題はない。

Thunder などを採掘できないのはなぜですか?ダウンロードしたファイルが不完全である可能性があります
画像は問題なく開くことができますが、このテストコードでダウンロードしたものは使用できません

スクリーンショットを撮って確認してください。

また、何を使って開けましたか。コードの実行環境は何ですか?

テスト済み、すべて正常に動作します。

Win7 画像ビューア

Google Chrome apache php5.3


E/Apache/htdocs ディレクトリに qq.jpg ファイルはありますか?

はい、見えません....

メモ帳で画像ファイルを開いて、そこにあるものを確認してください。

大量の文字化け

コード内に $file_path=iconv("utf-8", "gb2312", $file_name)

があります。これは、php がウィンドウ システム

で動作していることを意味します。システムはテキスト ファイルとバイナリ ファイルを厳密に区別します

ただし、バイナリ ファイルをテキスト モードで開くには $fp=fopen($file_path,"r"); を使用します

したがって、ルールに違反しているため、正しい結果は得られません

バイナリ モードでバイナリ ファイルを開く $fp=fopen($file_path,"r b"); を使用する必要があります

さらに、utf-8 でエンコードされたプログラム ファイルは、BOM ヘッダーのない形式で保存する必要があります


ありがとうございます。BOM なしに変更してください。ヘッダー形式を保存するだけです

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。