本文中使用的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文件等)
声明:禁止任何非法用途使用,凡因违规使用而引起的任何法律纠纷,本站概不负责。


精彩评论