• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • dedecms
  • ecshop
  • z-blog
  • UcHome
  • UCenter
  • drupal
  • WordPress
  • 帝国cms
  • phpcms
  • 动易cms
  • phpwind
  • discuz
  • 科汛cms
  • 风讯cms
  • 建站教程
  • 运营技巧
您的位置:首页 > CMS教程 >建站教程 > Thinkphp6如何利用ZipArchive打包下载文件

Thinkphp6如何利用ZipArchive打包下载文件

作者:站长图库 字体:[增加 减小] 来源:互联网

站长图库向大家介绍了Thinkphp6,ZipArchive打包,下载文件等相关知识,希望对您有所帮助

下面给大家介绍Thinkphp6利用ZipArchive打包下载文件的方法,希望对需要的朋友有所帮助!

基础环境

系统环境:Windows10 x64

PHP集成环境:phpstudy

PHP依赖管理工具:Composer

手册:Thinkphp

(一)下载tp6框架

composer create-project topthink/think tp6

(二)打包下载类

<?phpnamespace Jrk;class Zipdown{    /**     * 打包压缩文件及文件夹     *     * @Author Hhy <jackhhy520@qq.com>     * @DateTime 2020-07-10 13:20:06     * @param array $files     * @param string $zipName 压缩包名称     * @param boolean $wen      * @param boolean $isDown     * @return void     **/    public function zip_file($files = [], $zipName = '', $wen = true,$isDown = true){        $zip_file_path='zip/';        // 文件名为空则生成文件名        if (empty($zipName)) {            $zipName = $zip_file_path.date('YmdHis') . '.zip';        }else{            $zipName=$zip_file_path.$zipName.'.zip';        }        // 实例化类,使用本类,linux需开启zlib,windows需取消php_zip.dll前的注释        $zip = new \ZipArchive;        /*        * 通过ZipArchive的对象处理zip文件        * $zip->open这个方法如果对zip文件对象操作成功,$zip->open这个方法会返回TRUE        * $zip->open这个方法第一个参数表示处理的zip文件名。        * 这里重点说下第二个参数,它表示处理模式        * ZipArchive::OVERWRITE 总是以一个新的压缩包开始,此模式下如果已经存在则会被覆盖。        * ZipArchive::OVERWRITE 不会新建,只有当前存在这个压缩包的时候,它才有效        * */        if ($zip->open($zipName, \ZIPARCHIVE::OVERWRITE | \ZIPARCHIVE::CREATE) !== true) {            exit('无法打开文件,或者文件创建失败');        }          // 文件夹打包处理        if (is_string($files)) {            // 文件夹整体打包            $this->addFileToZip($files, $zip);        } else {             // 文件打包            foreach ($files as $val) {                if(file_exists(app()->getRootPath().'public'.$val['att_dir'])){                    if($wen){                        //根据存储的文件夹打包分层                        $zip->addFile(app()->getRootPath().'public'.$val['att_dir'], iconv('UTF-8','gbk',$val['img_dir'].'/'.$val['name']));                    }else{                        //不分层                        $zip->addFile(app()->getRootPath().'public'.$val['att_dir'], iconv('UTF-8','gbk',$val['name']));                    }                }            }        }        // 关闭        $zip->close();        // 验证文件是否存在        if (!file_exists($zipName)) {            exit("文件不存在");        }        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;        }   &nb
  


 
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • ThinkPHP6对接微信扫码登录
  • 一起聊聊thinkphp6使用think-queue实现普通队列和延迟队列
  • ThinkPHP6.0 重写URL去掉Index.php的解决方法
  • Thinkphp6自定义配置文件以及调用(config文件夹下的配置)
  • 基于thinkphp6.x的API接口开发简单小实例
  • ThinkPHP 6.0 多语言优化扩展包的安装与使用
  • 详解ThinkPHP6结合GuzzleHTTP发送HTTP请求
  • 关于ThinkPHP6多例Redis类实现
  • 实例详解thinkphp6搭建后端api接口
  • Thinkphp6微信PC端登录和手机端登录逻辑分享

相关文章

  • phpsotrm设置内存限制后打不开了怎么办?
  • PhotoShop制作漂亮的渐变星光文字效果教程
  • 为什么不建议使用@import引入css
  • PHP如何实现获取验证码
  • 一张图搞定如何在PhpStorm中修改类文件头部作者
  • 织梦dedecms网站六大SEO优化技巧分享
  • Linux下使用NTFS文件系统(Linux挂载NTFS数据盘)
  • vue实现一个获取按键展示快捷键效果的Input组件
  • 利用画笔及描边路径制作漂亮的金色树叶字
  • DEDECMS的优化方案

文章分类

  • dedecms
  • ecshop
  • z-blog
  • UcHome
  • UCenter
  • drupal
  • WordPress
  • 帝国cms
  • phpcms
  • 动易cms
  • phpwind
  • discuz
  • 科汛cms
  • 风讯cms
  • 建站教程
  • 运营技巧

最近更新的内容

    • dede 安全设置集合!dede站长必看!
    • PhotoShop图层样式打造复古大气皇族金字效果教程
    • ThinkPHP6通过Ucenter实现注册登录的示例代码
    • PhotoShop CS6简单制作细线格子纹理字效教程
    • Discuz论坛更换域名,详细文件修改步骤
    • PHP实现获取url地址中顶级域名的方法示例
    • 禾匠4.4.8微信授权接口修复教程
    • PS制作漂亮的‘少了你世间万种都成单调’古风图
    • Navicat连接Mysql8.0.11出现1251错误怎么办
    • 如何用php程序实现网页换肤

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有