ホームページ > バックエンド開発 > PHPチュートリアル > ダウンロードした画像に常に数バイトが足りないのはなぜですか?

ダウンロードした画像に常に数バイトが足りないのはなぜですか?

WBOY
リリース: 2016-06-23 13:42:22
オリジナル
1172 人が閲覧しました


$file_name="Koala.jpg";

if(!file_exists($file_name)){
echo "ファイルが存在しません"
}

$fp=fopen($ファイル名 ,"r");
$file_size=filesize($file_name);
header("Content-type: application/octet-stream")
header("Accept-Range: bytes") ");
header("Accept-Length: $file_size");
header("Content-Disposition:attachment; filename=".$file_name);

$buffer=1024;
while(!feof($fp) ){
$file_data = fread($fp,$buffer);


fclose($fp)



ディスカッションに返信(解決策)

will echo $file_size;Remove

機能しないようです。次の文をログアウトした後のバイト数を確認するために後で追加しました

エラーの原因:

テキストモードを使用する バイナリファイルを開く
この問題は、画像処理でよく発生します

$file = fopen($file_name,"rb"); を使用する場合、

操作時に「b」マークを指定しない場合バイナリ ファイルの場合、破損したイメージ ファイルや rn 文字に関する奇妙な問題など、いくつかの奇妙な問題が発生する可能性があります。

上の階、ありがとうございます。試してみました。前と同じようですが、とにかくありがとう

これは私が少し前にやったことと似ていますが、バイト数も多く、ダウンロードした画像が開けません。
これが解決策です。長い間検索した後に見つけました

// コードの前 (または後) に出力があり、ダウンロードされたファイルにも書き込まれる可能性があるため、ダウンロード時にさらに数バイトが発生します
// ダウンロードされたファイルにはさらにいくつかのバイトがあります。バイトの解決策は、 ob_start(); と ob_end_clean(); を使用して前の出力をクリアします。 ob_start() "); / / 返されたファイル
header (" accept-ranges: bytes ") // バイト サイズに従ってヘッダー (" Content-LENGTH: $ File_size ") に戻ります); -Disposition: filename=".$name); ;//ここでクライアント上のポップアップ ダイアログ ボックスで、対応するファイル名

のバイト数は数バイト多いですか、それとも数バイト少ないですか?

さらに数バイトを使用すると、画像自体に問題があるはずです

echo $file_size にコメントしただけです。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート