使用php进行批量下载文件

本文中使用的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文件等)



声明:禁止任何非法用途使用,凡因违规使用而引起的任何法律纠纷,本站概不负责。

小周博客
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

精彩评论

全部回复 0人评论 7,777人参与

loading