ECHO陈文
关注互联网技术开发与维护运营

php如何批量打包下载远程、本地多文件

直接上后台代码,前端就放一个iframe,默认隐藏,点击下载按钮,动态的改变iframe 地址就可以了,也可以自由发挥

header("Content-type: text/html; charset=utf-8");
$fileArr = [];
$fileArr[0] = ['file_path' => './public/banner.jpg'];
$fileArr[1] = ['file_path' => 'https://www.xxxx.com/public/banner.jpg'];
//要使用该类,需要先启用 extension=php_zip.dll
$zip = new \ZipArchive ();
//php内置的压缩类
$res = $zip->open($tmpFile, \ZipArchive::CREATE);
if ($res === TRUE) {
    foreach ($fileArr as $val) {
        //远程文件需要curl 一下
        $file = iconv("utf-8", "gb2312", $val['file_path']);
        $ch = curl_init();
        curl_setopt($ch, CURLOPT_POST, 0);
        curl_setopt($ch, CURLOPT_URL, $file);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
        $fileContent = curl_exec($ch);
        curl_close($ch);
        //本地的你可以直接写路径$zip->addFromString($val['file_path'], basename($val['file_path']));
        $zip->addFromString(basename($file), $fileContent);  //将文件循环压缩到压缩包
    }
}

$zip->close();

header('Content-Type: application/zip');
header("Content-Transfer-Encoding: Binary");
header("Content-disposition: attachment; filename=" . date('YmdHis') . ".zip");
header('Content-Length: ' . filesize($tmpFile));
ob_end_clean();
readfile($tmpFile);
unlink($tmpFile);

以上这篇php如何批量打包下载远程、本地多文件就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持芦苇派。

赞(0) 打赏
未经允许不得转载:芦苇派 » php如何批量打包下载远程、本地多文件
分享到: 更多 (0)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏