ホームページ >バックエンド開発 >PHPチュートリアル >ダウンローダー コードに問題があり、PDF ファイルが破損している可能性があります。

ダウンローダー コードに問題があり、PDF ファイルが破損している可能性があります。

WBOY
WBOYオリジナル
2016-06-23 14:01:051645ブラウズ

サーバー内の PDF ファイルは正常です。FTP による直接ダウンロードによって検証されています。
ダウンローダーのコードの一部は次のとおりです:

$file_size = filesize($filedir);
header("Content-type: application/octet-stream;charset=ISO-8859-1"); "キャッシュ制御: プライベート");
header("Accept-Range: バイト");
header("Content-Disposition: 添付ファイル名); =" . $ this->delFileName);
$fp = fopen($filedir,"r");
$buffer_size = 1024;
$cur_pos = 0;
while(!feof($fp) && $filedir- $cur_pos > $buffer_size)
{
$buffer = fread($fp,$buffer_size);
$cur_pos += $buffer_size
}
if($file_size > 0)
$buffer = fread($ fp,$file_size-$cur_pos);
else
$buffer = fread($fp,$this->FjSize);
fclose($fp);



ディスカッションへの返信 (解決策)
$fp = fopen($filedir,"r b"); // Linux では必須ではありませんが、バイナリ モードで開くことをお勧めします。テキストモードでは、0x1a がファイルの終わりとみなされます

while(!feof($fp) && $filedir-$cur_pos > $buffer_size)

while(!feof($fp)) feof と書く必要があります。 ($fp) はファイルの終わりです
ならば、$filedir- $cur_pos > $buffer_size はもう必要ありません

$filedir が $buffer_size の整数倍ではないなど、エラーが発生する可能性があります

さらに、ファイルの内容を除き、BOM ヘッダーを含むその他の内容は出力できません




モデレーターに従う 言っていることは変わりました。まだ間違っています。
PS: このプログラムは過去 1 年間順調に動作していましたが、問題が発生したのはここ数日です。个 一 ファイルをアップロードすると、内容は次のとおりです
1234567890
ABCDEFGHIJKLMNOPQRSTUVWXYZ
その後、ローカルエリアにダウンロードされます。

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