zoukankan      html  css  js  c++  java
  • 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 ipArchive();
    $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,ipArchive::OVERWRITE | ipArchive::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);
    }

  • 相关阅读:
    三层架构简单实例【转】
    排序 普通插入法排序
    排序 选择排序
    C#中的继承与覆盖
    排序 冒泡排序法
    c#使用Split分割字符串的几种方法
    GROUP BY,WHERE,HAVING之间的区别和用法
    递归 斐波那契数列
    【公众号系列】一文看懂税费改革
    【MM系列】SAP库龄报表逻辑理解
  • 原文地址:https://www.cnblogs.com/luluzc/p/11396090.html
Copyright © 2011-2022 走看看