在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
header使用后会终止HTTP请求,所以不能使用header批量下载文件,这里使用打包的方法,这个过程中将使用到 ZipArchive 这个类,需要linux安装zlib扩展,windows需取消php_zip.dll前的注释
$pic_path = 'http://www.baidu.com'; $qrList = array( array( 'data'=>array( 'id'=>1, 'source'=>'qrCodeSale1' ), ), array( 'data'=>array( 'id'=>2, 'source'=>'qrCodeSale2' ), ), array( 'data'=>array( 'id'=>3, 'source'=>'qrCodeSale3' ), ), ); $filename = '/tmp/batchQrCodeDownload.zip'; $zip = new ZipArchive(); $zip->open($filename, ZipArchive::OVERWRITE); $zip->addEmptyDir('images'); //增加一个目录的原因是,如果zip包没东西会一直下载,永不停止 foreach ($qrList as $value) { $fileData = file_get_contents($pic_path . '/' . $value['data']['source'] . '/' . $value['data']['source'] . '_' . $value['data']['id'] . '.jpg'); if ($fileData) { $zip->addFromString('images/' . $value['data']['source'] . '.jpg', $fileData); } } $zip->close(); //打开文件 $file = fopen($filename, "r"); //返回的文件类型 Header("Content-type: application/octet-stream"); //按照字节大小返回 Header("Accept-Ranges: bytes"); //返回文件的大小 Header("Accept-Length: " . filesize($filename)); //这里对客户端的弹出对话框,对应的文件名 Header("Content-Disposition: attachment; filename=batchQrCodeDownload.zip"); //一次只传输1024个字节的数据给客户端 //向客户端回送数据 $buffer = 1024; // //判断文件是否读完 while (!feof($file)) { //将文件读入内存 $file_data = fread($file, $buffer); //每次向客户端回送1024个字节的数据 echo $file_data; } fclose($file); unlink($filename); //删除文件
注意:zip文件可以放在tmp文件下,这个文件夹有777权限
|
2022-08-17
2022-11-06
2022-07-30
2022-08-17
2022-08-15
请发表评论