このサイトは以前にファイルのダウンロード機能を共有していました。具体的な記事のリンクアドレスは次のとおりです。
PHPファイルダウンロード関数(コード)最近、お客様から、Web サイト上のすべての写真をダウンロードできないとの報告がありました。ダウンロードされた写真はすべて破損しており、それが原因で直接開くことができなくなりました。その結果、この問題が存在することがわかりました。ソースコードを注意深く調べた結果、根本的な原因は fread 関数の 2 番目のパラメータにあることがわかりました。 fread 関数が一度に読み取れるバイト数は 8192 バイト、つまり 8KB に制限されています。このサイズを超えるファイルを完全に読み込むには、最後までループで読み込む必要があります。ファイル。上記の修正を踏まえ、以下のコードがブレーク後のコードとなり、テストの結果、問題は解決しました。
function download($file_url,$new_name=''){ if(!isset($file_url)||trim($file_url)==''){ return '500'; } if(!file_exists($file_url)){//检查文件是否存在 return '404'; } $file_name=basename($file_url); $file_type=explode('.',$file_url); $file_type=$file_type[count($file_type)-1]; $file_name=trim($new_name=='')?$file_name:urlencode($new_name).'.'.$file_type; //输入文件标签phpernote header("Content-type: application/octet-stream"); header("Accept-Ranges: bytes"); header("Accept-Length: ".filesize($file_url)); header("Content-Disposition: attachment; filename=".$file_name); //输出文件内容 @readfile($file_type); }