本文中使用的php版本:php7.4.27
单个文件的下载很容易实现,但是批量下载文件的话,虽然说比单文件下载要麻烦一些,但其实也还行。
批量下载文件的原理:将要批量下载的文件 打包压缩为zip文件,然后下载这一个压缩后的zip文件即可。
实现思路如下:
把要下载的文件路径放到一个数组中,这里就叫$files数组了
把要下载的文件打包成zip压缩包
下载压缩包,完成后,删除服务器上的临时打包成的zip文件
示例代码如下:
$files[] = './test.html'; $files[] = './test.xlsx'; $filename = 'tmp.zip'; $zip = new ZipArchive(); $zip->open($filename, ZipArchive::OVERWRITE); foreach($files as $key => $val) { $zip->addFile($val); } $zip->close(); $file = fopen($filename, "r"); //只读方式打开 /*******header头不要设置错了哦********/ header("Content-type: application/octet-stream"); //返回的文件(流形式) header("Accept-Ranges: bytes"); //按照字节大小返回 header("Accept-Length: " . filesize($filename)); //返回文件大小 header("Content-Disposition: attachment; filename=files.zip"); //这里客户端的弹出对话框,对应的文件名 $buffer = 1024; //一次只传输1024个字节的数据给客户端 while(!feof($file)) { $file_data = fread($file, $buffer); //从打开的文件中 读取1024个字节数据放入内存中 echo $file_data; //每次向客户端回送1024个字节的数据 } fclose($file); //关闭打开的文件资源 unlink($filename); //删除临时打包生成的zip压缩包文件 exit();
推荐阅读:使用php操作zip文件(压缩文件为zip及解压zip文件等)
声明:禁止任何非法用途使用,凡因违规使用而引起的任何法律纠纷,本站概不负责。
精彩评论