Thinkphp6---开发ZipArchive打包下载文件
2022/5/4 1:43:24
本文主要是介绍Thinkphp6---开发ZipArchive打包下载文件,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
最近需要开发一个使用Thinkphp6实现打包下载文件的功能,具体开发流程如下:
windows环境:
1、下载拓展
https://windows.php.net/downloads/pecl/releases/zip/
找到合适自己PHP版本和系统的ZIP,推荐选择:1.13.5
然后选择合适自己PHP版本的压缩包,我的PHP是7.1的,所以选择:php_zip-1.13.5-7.1-ts-vc14-x86.zip
2、解压拓展
解压文件后,把php_zip.dll文件放到PHP的扩展文件夹里
这里的PHP的拓展文件夹就是:PHP目录下的ext目录:
F:\upupw\PHP7\ext
然后打开 php.ini 添加拓展:extension=php_zip.dll
可以直接搜索:extension 在拓展下面添加即可:
保存后,重启apache:
通过 phpinfo(); 查看是否启动该拓展:
linux环境参考:
https://www.jianshu.com/p/7d032dc34219
具体代码示例:
/** * [index 打包下载] * https://www.csdn.net/tags/MtTaMgzsMDQ3MDE3LWJsb2cO0O0O.html * https://blog.csdn.net/qq_38398347/article/details/118222905 */ public function index() { // $rootPath = app()->getRootPath(); // 根目录 \tp6.fyz.com\ $rootPath = $_SERVER['DOCUMENT_ROOT'];// 网站根目录 /tp6.fyz.com/public $pathArr = [ "/uploads/idcard-back.jpg", "/uploads/idcard-combine.jpg" ]; foreach($pathArr as &$item) $item = $rootPath . $item; $zipName = "zip/image.zip"; $result = $this->makeZip($pathArr,$zipName); // 验证文件是否存在 if (!file_exists($result['path'])) { exit("文件不存在"); } $isDown = true; // 下载 if ($isDown) { // ob_clean(); // 下载压缩包 header("Cache-Control: public"); header("Content-Description: File Transfer"); header('Content-disposition: attachment; filename=' . basename($zipName)); //文件名 header("Content-Type: application/zip"); //zip格式的 header("Content-Transfer-Encoding: binary"); //告诉浏览器,这是二进制文件 header('Content-Length: ' . filesize($zipName)); //告诉浏览器,文件大小 @readfile($zipName);//ob_end_clean(); // @unlink(app()->getRootPath().'public/'.$zipName);// 删除压缩包 } else { // 直接返回压缩包地址 return $zipName; } }
通过该方法可以完成对文件的打包和下载,但是新问题是打包的目录结构层级太深:
可以看到这样打包将会把这个文件的所有目录给进行打包压缩。
这篇关于Thinkphp6---开发ZipArchive打包下载文件的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-12-19php8的协程和hyperf的协程有什么区别?-icode9专业技术文章分享
- 2024-12-19php8 的fiber是什么?-icode9专业技术文章分享
- 2024-12-05怎么在php8,1 里面开启 debug?-icode9专业技术文章分享
- 2024-12-05怎么在php8,1 里面开启 debug?-icode9专业技术文章分享
- 2024-11-29使用PHP 将ETH账户的资产汇集到一个账户
- 2024-11-23怎么实现安卓+php 热更新方案?-icode9专业技术文章分享
- 2024-11-22PHP 中怎么实现判断多个值是否为空、null 或者为 false?-icode9专业技术文章分享
- 2024-11-11开源 PHP 商城项目 CRMEB 二次开发和部署教程
- 2024-11-09怎么使用php在kaufland平台刊登商品?-icode9专业技术文章分享
- 2024-11-05PHP的抽象类和接口是什么,有什么区别-icode9专业技术文章分享