php ZipArchive 多文件打包下载

   public function downLoad($dataUrl,$saveName)
    {
        $datalist = [
            ROOT_PATH.‘/public/introduce/110.docx‘,
            ROOT_PATH.‘/public/upfile/110.zip‘
        ];
//        print_r($datalist);die;
        $filename = ROOT_PATH.‘\public\/‘.$saveName.‘.zip‘;
        if(file_exists($filename)){
            unlink($filename);
        }

        $zip = new \ZipArchive();
        if ($zip->open($filename,\ZipArchive::CREATE)!== true){
            exit(‘无法打开文件,或者文件创建失败‘);
        }

        foreach ($dataUrl as $index => $item) {
            if (DIRECTORY_SEPARATOR==‘\\‘){
                $item = str_replace(‘/‘,DIRECTORY_SEPARATOR,$item);
                $filename = str_replace(‘/‘,DIRECTORY_SEPARATOR,$filename);
            }
//            var_dump($item);
//            var_dump(file_exists($item));die;
            if (file_exists($item)){
                $zip->addFile($item,basename($item));
            }
        }

        $zip->close();
        if(!file_exists($filename)){
            exit("无法找到文件"); //即使创建,仍有可能失败
        }
        header(‘Content-Type: application/zip‘);
        header(‘Content-disposition: attachment; filename=‘.basename($filename));
        header(‘Content-Length: ‘ . filesize($filename));
        @readfile($filename);     @unlink ( $filename );
}

注意:里面的路径全部用绝对路径,不然会找不到文件

附赠其他操作:

解压缩zip文件

public function unzip_file($file, $dir){ 

        // 实例化对象 

        $zip = new ZipArchive() ; 

        //打开zip文档,如果打开失败返回提示信息 

        if ($zip->open($file) !== TRUE) { 

          die ("Could not open archive"); 

        } 

        //将压缩文件解压到指定的目录下 

        $zip->extractTo($dir); 

        //关闭zip文档 

        $zip->close();  

    }

获取解压文件目录

public function loopFun($dir)  

    {  

        $handle = opendir($dir.".");

        //定义用于存储文件名的数组

        $array_file = array();

        while (false !== ($file = readdir($handle)))

        {

            if ($file != "." && $file != "..") {

                $array_file[] = $dir.‘/‘.$file; //输出文件名

            }

        }

        closedir($handle);

        return $array_file;

        //print_r($array_file);

    }

原文地址:https://www.cnblogs.com/zhangdong156/p/11771174.html

时间: 2024-11-08 23:12:23

php ZipArchive 多文件打包下载的相关文章

PHP扩展类ZipArchive实现压缩解压Zip文件和文件打包下载 && Linux下的ZipArchive配置开启压缩

PHP ZipArchive 是PHP自带的扩展类,可以轻松实现ZIP文件的压缩和解压,使用前首先要确保PHP ZIP 扩展已经开启,具体开启方法就不说了,不同的平台开启PHP扩增的方法网上都有,如有疑问欢迎交流.这里整理一下常用的示例供参考. 一.解压缩zip文件 ? 1 2 3 4 5 6 7 8 9 10 11 $zip = new ZipArchive;//新建一个ZipArchive的对象 /* 通过ZipArchive的对象处理zip文件 $zip->open这个方法的参数表示处理的

PHP扩展类ZipArchive实现压缩解压Zip文件和文件打包下载

PHP扩展类ZipArchive实现压缩解压Zip文件和文件打包下载 http://my.oschina.net/junn/blog/104464 PHP ZipArchive 是PHP自带的扩展类,可以轻松实现ZIP文件的压缩和解压,使用前首先要确保PHP ZIP 扩展已经开启,具体开启方法就不说了,不同的平台开启PHP扩增的方法网上都有,如有疑问欢迎交流.这里整理一下常用的示例供参考. 一.解压缩zip文件 ? 1 2 3 4 5 6 7 8 9 10 11 $zip = new ZipAr

多文件打包下载以及单文件下载

今天项目中需要多文件打包下载和单文件下载的功能,以下做一些总结. 原代码: 1 package com.hlbj.utils; 2 3 import java.io.File; 4 import java.io.FileInputStream; 5 import java.io.FileOutputStream; 6 import java.io.InputStream; 7 import java.io.OutputStream; 8 import java.util.ArrayList; 9

文件打包,下载之使用PHP自带的ZipArchive压缩文件并下载打包好的文件

总结: 使用PHP下载文件的操作需要给出四个header(),可以参考我的另一篇博文:PHP如何实现下载功能超详细流程分析 计算文件的大小的时候,并不需要先打开文件,通过filesize($filename)就可以看出,如果需要先打开文件的话,filesize可能就会是这样的形式了filesize($filehandle) 向客户端回送数据的是,记得要设置一个buffer,用来指定每次向客户端输出多少数据,如:$buffer=1023.如果不指定的话,就会将整个文件全部写入内存当中,再一次性的讲

servlet实现多文件打包下载

当用户一次下载多个文件时.普通情况是,每下载一个文件,均要弹出一个下载的对话框.这给用户造成了非常大不便. 比較理想的情况是,用户选择多个文件后.server后端直接将多个文件打包为zip.以下贴出实现代码. 前端Javascript代码(使用Javascript创建表单.通过提交表单的方式訪问后端的MultiDownload): var tmpForm = document.createElement("form"); tmpForm.id = "form1" ;

java 实现多文件打包下载

jsp页面js代码: function downloadAttached(){ var id = []; id.push(infoid); var options = {}; options.action = "${pageContext.request.contextPath}/DocumentController/downloadattached"; options.argname1="id"; options.argvalue1=id.join(','); f

PHP扩展类ZipArchive实现压缩Zip文件和文件打包下载

1 <?php 2 /** 3 * 关于文件压缩和下载的类 4 * @author tycell 5 * @version 1.0 6 */ 7 class zip_down{ 8 9 protected $file_path; 10 /** 11 * 构造函数 12 * @param [string] $path [传入文件目录] 13 */ 14 public function __construct($path){ 15 $this->file_path=$path; //要打包的根目录

de4dot3.14更新文件打包下载

刚发现de4dot更新了,虽然只是10月份的文件更新,并未发布新的release,但好多人还不会编译... 关于de4dot有何功能就不再讲了. 本文主要提供编译通过后的打包文件下载. 首先下载de4dot源代码(点击这里),同时还需要下载作者的另一个library(dnlib). 解压 dnlib 后将 dnlib-master 文件夹中文件复制到 \de4dot-master\dnlib 中用 Visual Studio (最低版本2010)打开即可. 本文地址:http://www.cnb

Java批量文件打包下载

经常遇到选择多个文件进行批量下载的情况,可以先将选择的所有的文件生成一个zip文件,然后再下载,该zip文件,即可实现批量下载,但是在打包过程中,常常也会出现下载过来的zip文件中里面有乱码的文件名,通过使用ant.jar中的org.apache.tools.zip里的ZipOutPutStream为实现编码的设置. 代码如下: ant包引用 [html] view plain copy print? <span style="font-size:14px">Xml代码 &