完全なコード:
public function downloadFile(){ $M = M($this->tableName); $map['id'] = I('fileId'); $info = $M->where($map)->find(); $filepath = '.'.$info['path']; if( !file_exists($filepath) ){ echo '文件不存在!'; exit; } //$M->where($map)->setInc('download'); $file = fopen($filepath,"r"); // 打开文件 // 输入文件标签 Header("Content-type: application/octet-stream"); Header("Accept-Ranges: bytes"); Header("Accept-Length: ".filesize($filepath)); Header("Content-Disposition: attachment; filename=" . $info['savename']); // 输出文件内容 echo fread($file,filesize($filepath)); fclose($file); exit; }
上記のコードは thinkphp のメソッドです
$this->tableName はファイルを保存するためのデータテーブルです
fileId に基づいてデータベース応答ファイルを取得します
file_exists を使用して、ファイルが存在する場合、存在しない場合は、エラー メッセージが出力されます
fopen を通じてファイルを開きます
more Header メソッドがファイルを開く処理を処理し、ファイルは fread() メソッドを通じて出力されます。