ThinkPHP框架下如何用PHP自带的ZipArchive类打包压缩文件

public function downloadzip(){    $catid = $this->request->param(‘catid/d‘, 0);    $id = $this->request->param(‘id/d‘, 0);    $category = getCategory($catid);    if (empty($category)) {        $this->error(‘该栏目不存在!‘);    }        $modelid = $category[‘modelid‘];        $fieldList = $this->Cms_Model->getFieldList($modelid, $id);

    $attatchs=$fieldList[‘uploadmaterial‘][‘value‘];

    $attatchsarray=explode(‘,‘,$attatchs);    $zip=new \ZipArchive();    $downpath=[];    $timefils=date("Ymd",time());    if(!file_exists(‘uploads/zip/‘.$timefils)){        mkdir (‘uploads/zip/‘.$timefils,0777,true);    }

    $zipName =‘uploads/zip/‘.$timefils.‘/download‘.$id.‘.zip‘;

    if($zip->open($zipName,\ZipArchive::OVERWRITE | \ZipArchive::CREATE)==TRUE){        foreach($attatchsarray as $key=>$value){            $downpath=dirname(ROOT_PATH).get_file_path($value);            $downpathname=get_file_name($value); //改文件一定得为本地地址不可以为域名地址                $zip->addFile($downpath, basename($downpathname));  //basename($downpathname)这个是压缩包里面的文件名称
        }    }    $zip->close();

    if(!file_exists($zipName)){        $this->error(‘文件创建失败‘);    }    header(‘Content-Type: application/zip‘);    header(‘Content-disposition: attachment; filename=‘.$zipName);    header(‘Content-Length: ‘ . filesize($zipName));//文件大小    readfile($zipName);}

原文地址:https://www.cnblogs.com/luluzc/p/11396090.html

时间: 2024-10-15 21:14:52

ThinkPHP框架下如何用PHP自带的ZipArchive类打包压缩文件的相关文章

thinkphp框架下session 存入mongo

最近做系统的时候处理到session入数据库问题 , 由于是在thinkphp框架下, 查看了下框架session相关代码, 发现原框架默认支持mysql数据库 , 于是对原Session驱动做了相应修改 , 使其支持mongo数据库存储session 修改的相关文件是\Think\Session\Driver\Db\Db.class.php , 本人使用的是TP3.2,2版本 , 修改后的Db.class.php代码如下: <?php namespace Think\Session\Drive

thinkphp框架下404页面设置

404页面即系统在找不到请求的操作方法和找不到请求的控制器名称时的一种报错行为的优化. 第一步:在thinkphp框架中的Home/Comtroller中建一个EmptyController.class.php,其代码如下: <?phpnamespace Home\Controller;use Think\Controller;class EmptyController extends Controller{     //空操作_empty()方法    function _empty(){  

Thinkphp框架下(同服务器下)不同二级域名之间session互通共享设置

在Thinkphp框架下根目录打开index.php 在头部加入如下代码即可: //入口文件 define('DOMAIN','abc.com');//abc.com换成自己的跟域名 //以下两行是为了子域名共享SESSION 注意 DOMAIN 需要改为实际的域名 ini_set('session.cookie_path', '/'); ini_set('session.cookie_domain', DOMAIN);

Thinkphp框架下连接两个及以上的数据库方法

在我们的实际开发者,我们经常需要链接两个以上的数据库,方法跟简单 Thinkphp文档中也有介绍:点击查看 方法如下: 第一步:配置文件config.php <?php //默认数据库1 return array( //'配置项'=>'配置值' 'DB_TYPE' => 'mysql', // 数据库类型 'DB_HOST' => '10.10.10.10', // 服务器地址 'DB_NAME' => 'user', // 数据库名 'DB_USER' => 'roo

ThinkPHP框架下,jq实现在div中添加标签并且div的大小会随之变化

php初学者,有什么不对的还请指正. 首先是在html页面中用jq实现添加标签:divAchivePersonnal是select所在的div的外层div,divselectAchivePersonnal是select的最近一层div,info内是字符串拼接,jq标签插入用append方法.接下来是调整css样式,使div会随着标签增加而加大,这里要用一个css属性overflow(亲自查),这里直接在divselectAchivePersonnal使用时不会达到你想要的效果,所以至少要有两个嵌

Thinkphp框架下PHPExcel实现excel数据的批量化导入

第一步:下载官方的PHPExcel文件,下载地址https://github.com/PHPOffice/PHPExcel 第二步:解压打开,将PHPExcel\Classes\全部文件拷贝到thinkhp项目的根目录\ThinkPHP\Library\Vendor\,如下图所示 第三步: HTML代码如下: <form action="{:U('Index/impUser')}" method="post" enctype="multipart/f

ThinkPHP框架下自定义控制器方法

每个模块是一个Action文件,因此应用开发中的一个重要过程就是给不同的模块定义具体的操作.一个应用如果不需要和数据库交互的时候可以不需要定义模型类,但是必须定义Action控制器,一般位于项目的Lib/Action目录下面. Action控制器的定义非常简单,只要继承Action基础类就可以了,例如: Class UserAction extends Action{} 控制器文件的名称是UserAction.class.php. 如果我们要执行下面的URL http://localhost/A

涨知识,涨知识 :ThinkPHP框架下Where条件查询Mysql数据库某字段是否为空

代码虐我千百遍,我对代码如初恋~ 问题: 查询某字段app_date数据是否为NULL,正常我们实现的办法是: $map['app_data'] = array('eq','null'); $data = M("Info") -> field("*") -> where($map) -> select() 利用echo  M("Info")->getLastSql();  打印sql语句如下: SELECT `id`,`n

Thinkphp框架下设置session的过期时间

打开项目中的配置文件,添加session的过期配置,如下: 'SESSION_OPTIONS' => array( 'name' => 'BJYSESSION', //设置session名 'expire' => 3600, //SESSION过期时间,单位秒 'use_trans_sid' => 1, //跨页传递 'use_only_cookies' => 0, //是否只开启基于cookies的session的会话方式 ),