精华内容
下载资源
问答
  • ZipArchive是用于在iOS,macOS和tvOS上压缩和解压缩文件的简单实用程序类。 解压缩zip文件; 解压缩受密码保护的zip文件; 解压缩AES加密的zip文件; 创建zip文件; 创建大文件(> 4.3Gb); 创建受密码保护...
  • ZipArchive

    2015-09-09 13:43:15
    iOS 解压缩文件类库,ZipArchive
  • Ansible-ara-archive.zip

    2019-09-18 09:42:47
    Ansible-ara-archive.zip,此存储库是https://github.com/dmsimard/ara的历史存档,请改用https://github.com/openstack/ara。ara:ansible run analysis,ansible是一个简单而强大的自动化引擎。它用于帮助配置管理、...
  • 适用于ZipArchive的Flysystem适配器 安装 composer require league/flysystem-ziparchive 用法 use League \ Flysystem \ Filesystem ; use League \ Flysystem \ ZipArchive \ ZipArchiveAdapter as Adapter ; $ ...
  • php ZipArchive可以说是php自带的一个函数了,他可对对文件进行压缩与解压缩处理,但是使用此类之前我们...ziparchive 可选参数1.ZipArchive::addEmptyDir添加一个新的文件目录2.ZipArchive::addFile将文件添加到...

    php ZipArchive可以说是php自带的一个函数了,他可对对文件进行压缩与解压缩处理,但是使用此类之前我们必须在php.ini中把extension=php_zip.dll前面的分号有没有去掉,然后再重启Apache这样才能使用这个类库。

    ziparchive 可选参数

    1.ZipArchive::addEmptyDir

    添加一个新的文件目录

    2.ZipArchive::addFile

    将文件添加到指定zip压缩包中。

    3.ZipArchive::addFromString

    添加的文件同时将内容添加进去

    4.ZipArchive::close

    关闭ziparchive

    5.ZipArchive::extractTo

    将压缩包解压

    6.ZipArchive::open

    打开一个zip压缩包

    7.ZipArchive::getStatusString

    返回压缩时的状态内容,包括错误信息,压缩信息等等

    8.ZipArchive::deleteIndex

    删除压缩包中的某一个文件,如:deleteIndex(0)删除第一个文件

    9.ZipArchive::deleteName

    删除压缩包中的某一个文件名称,同时也将文件删除。

    ......

    */

    实例

    一、解压缩zip文件

     代码如下复制代码
    $zip = new ZipArchive;//新建一个ZipArchive的对象

    /*

    通过ZipArchive的对象处理zip文件

    $zip->open这个方法的参数表示处理的zip文件名。

    如果对zip文件对象操作成功,$zip->open这个方法会返回TRUE

    */

    if ($zip->open('test.zip') === TRUE)

    {

    $zip->extractTo('images');//假设解压缩到在当前路径下images文件夹的子文件夹php

    $zip->close();//关闭处理的zip文件

    }

    二、将文件压缩成zip文件

     代码如下复制代码
    $zip = new ZipArchive;

    /*

    $zip->open这个方法第一个参数表示处理的zip文件名。

    第二个参数表示处理模式,ZipArchive::OVERWRITE表示如果zip文件存在,就覆盖掉原来的zip文件。

    如果参数使用ZIPARCHIVE::CREATE,系统就会往原来的zip文件里添加内容。

    如果不是为了多次添加内容到zip文件,建议使用ZipArchive::OVERWRITE。

    使用这两个参数,如果zip文件不存在,系统都会自动新建。

    如果对zip文件对象操作成功,$zip->open这个方法会返回TRUE

    */

    if ($zip->open('test.zip', ZipArchive::OVERWRITE) === TRUE)

    {

    $zip->addFile('image.txt');//假设加入的文件名是image.txt,在当前路径下

    $zip->close();

    }

    三、文件追加内容添加到zip文件

     代码如下复制代码
    $zip = new ZipArchive;

    $res = $zip->open('test.zip', ZipArchive::CREATE);

    if ($res === TRUE) {

    $zip->addFromString('test.txt', 'file content goes here');

    $zip->close();

    echo 'ok';

    } else {

    echo 'failed';

    }

    四、将文件夹打包成zip文件

     代码如下复制代码

    function addFileToZip($path, $zip) {

    $handler = opendir($path); //打开当前文件夹由$path指定。

    /*

    循环的读取文件夹下的所有文件和文件夹

    其中$filename = readdir($handler)是每次循环的时候将读取的文件名赋值给$filename,

    为了不陷于死循环,所以还要让$filename !== false。

    一定要用!==,因为如果某个文件名如果叫'0',或者某些被系统认为是代表false,用!=就会停止循环

    */

    while (($filename = readdir($handler)) !== false) {

    if ($filename != "." && $filename != "..") {//文件夹文件名字为'.'和‘..’,不要对他们进行操作

    if (is_dir($path . "/" . $filename)) {// 如果读取的某个对象是文件夹,则递归

    addFileToZip($path . "/" . $filename, $zip);

    } else { //将文件加入zip对象

    $zip->addFile($path . "/" . $filename);

    }

    }

    }

    @closedir($path);

    }

    $zip = new ZipArchive();

    if ($zip->open('images.zip', ZipArchive::OVERWRITE) === TRUE) {

    addFileToZip('images/', $zip); //调用方法,对要打包的根目录进行操作,并将ZipArchive的对象传递给方法

    $zip->close(); //关闭处理的zip文件

    }

    如果只知道文件名,而不知到文件的具体路径,可以搜索指定文件名的索引,再依靠索引获取内容。

     代码如下复制代码

    $zip = new ZipArchive;

    if ($zip->open('test.zip') === TRUE) {

    $index=$zip->locateName('example.php', ZIPARCHIVE::FL_NOCASE|ZIPARCHIVE::FL_NODIR);

    $contents = $zip->getFromIndex($index);

    }

    ?>

    上面获取索引依靠 locateName方法,如果压缩包内多个路径下有同名文件,好像只能返回第一个的索引,如果要获取所有同名文件的索引,只能使用笨办法,循环搜索。

     代码如下复制代码

    $zip = new ZipArchive;

    if ($zip->open('test.zip') === TRUE) {

    for($i = 0; $i < $zip->numFiles; $i )

    {

    if(substr_count($zip->getNameIndex($i), 'example.php')>0){

    $contents = $zip->getFromIndex($i);

    }

    }

    }

    ?>

    展开全文
  • 主要介绍了php使用ZipArchive提示Fatal error: Class ZipArchive not found in的解决方法,是使用ZipArchive时经常会遇到的问题,需要的朋友可以参考下
  • ziparchive 压缩工具

    千次阅读 2019-06-11 15:35:12
    https://php.net/manual/en/class.ziparchive.php
    展开全文
  • Archive.zip

    2019-05-20 20:38:03
    LeetCode官网原版电子书,100 pages, LeetCode eBook(Clean Code Handbook), 50道题,英文版本。算法语言是java,用过程化写的,c/c++的也能看懂。 附赠LeetCode常见算法题中文版,水友编写。
  • ZipArchive 解压zip

    2019-03-23 01:22:58
    NULL 博文链接:https://andydufresneone.iteye.com/blog/1050203
  • ziparchive_src.zip

    2020-07-24 09:44:46
    带Cmake,Windows和Linux下都可使用,基于ZLIB开发的C++源码,支持多级目录、加密解密压缩和解压,亲测可用。
  • toLinux 统一使用路径符 "/", 包含"\"替换为"/" func toLinux(basePath string) string { return strings.ReplaceAll(basePath, "\\", "/") } Zip 压缩 ... 参数 1 :压缩文件(目录)路径+名 ...func Zip(f...

    toLinux

    统一使用路径符 "/", 包含"\"替换为"/"

    func toLinux(basePath string) string {
    	return strings.ReplaceAll(basePath, "\\", "/")
    }

    Zip 压缩

        参数 1 :  压缩文件(目录)路径+名

        参数2 :   往哪里写, 本地压缩传文件变量, 压缩后将流传到其它电脑主机使用传入bytes.buffer  (即包含io.Writer接口的结构变量都可)

    func Zip(fp string, w io.ReadWriter) error {
    	archive := zip.NewWriter(w)
    	defer archive.Close()
    
    	linuxFilePath := toLinux(fp)
    	filepath.Walk(linuxFilePath, func(path string, info os.FileInfo, err error) error {
    
    		var linuxPath = toLinux(path)
    		if linuxPath == linuxFilePath { return nil }
    
    		header, _ := zip.FileInfoHeader(info)
    		header.Name = strings.TrimPrefix(linuxPath, linuxFilePath + "/")
    
    		if info.IsDir() {
    			header.Name += `/`
    		} else {
    			// 设置:zip的文件压缩算法
    			header.Method = zip.Deflate
    		}
    		// 创建:压缩包头部信息
    		writer, _ := archive.CreateHeader(header)
    		if !info.IsDir() {
    			file, _ := os.Open(linuxPath)
    			defer file.Close()
    			io.Copy(writer, file)
    		}
    		return nil
    	})
    
    	return nil
    }

    Unzip

      参数1: 解压到哪个路径下

      参数2: file/bytes.buffer 等待io.Reader接口的结构类型变量

    func Unzip(basePath string, r io.Reader) error {
    	/* 创建属于解压的缓存目录 */
    	var dir = path.Join(os.TempDir(), "zip")
    	os.MkdirAll(dir, 0666)
    
    	/* 创建解压缓存文件 */
    	f, e := ioutil.TempFile(dir, "zip")
    	if nil != e { return e }
    	defer func() {
    		f.Close()
    		os.RemoveAll(f.Name())
    	}()
    
    	_, e = io.Copy(f, r)
    	if nil != e { return e }
    
    	return unzip(basePath, f)
    }
    
    func unzip(basePath string, f *os.File) error {
    	var reader *zip.Reader
    	var stat, _ = f.Stat()
    	reader, e := zip.NewReader(f, stat.Size())
    	if nil != e { return e }
    	os.MkdirAll(basePath, 0666) // 确保解压目录存在
    
    	for _, info := range reader.File {
    		var fp = toLinux(path.Join(basePath, info.Name))
    		if info.FileInfo().IsDir() {
    			if e := os.MkdirAll(fp, info.FileInfo().Mode()); nil != e { return e }
    			continue
    		}
    
    		readcloser, e := info.Open()
    		if nil != e { return e }
    
    		b, e := ioutil.ReadAll(readcloser)
    		if nil != e { return e }
    		readcloser.Close()
    
    		if e := ioutil.WriteFile(fp, b, info.FileInfo().Mode()); nil != e { return e }
    	}
    	return nil
    }
    
    func main() {
        /* 1. 从压缩文件解压 */
    	file, e := os.Open("./hello.zip")
    	if nil != e { return }
    	defer file.Close()
    	Unzip("./hello", file)
    	
    	
    	bs, e := ioutil.ReadAll(file)
    	if nil != e { return }
    	
    	/* 2. 从存放压缩字节的buffer数据解压 */
    	buffer = bytes.NewBuffer(bs)
    	Unzip("./hello1", buffer)
    }

    问题

    解压的时候报错 The system cannot find the path specified.

    因为使用相对路径, 导致walk时出现地址不匹配 ./dizhi 跟 dizhi 不匹配 TrimPrefix没将地址替换掉

    (1) Zip函数去掉 if linuxPath == linuxFilePath { return nil }

            按目录层级进行压缩

       (2) 将绝对路径转化成绝对路径

           linuxFilePath := toLinux(fp) => linuxFilePath := ToAbsolutePath(fp)

          参考

          https://blog.csdn.net/halo_hsuh/article/details/107168060

    展开全文
  • archive.zip

    2021-04-22 12:35:56
    运动会数据集,从1896年雅典奥运会至2016年里约奥运会120年,包括运动员成绩及奖牌资料。
  • 参考文档:http://www.php.cn/manual/view/1285.html 1.创建新的压缩文件: function createNewZip(){ $zipFileName = 'D:\project\vr/web/temp/190627_113400.zip'; $imagePaths = [ 'D:\project\v...

    参考文档:http://www.php.cn/manual/view/1285.html
    1.创建新的压缩文件:

    function  createNewZip(){
            $zipFileName = 'D:\project\vr/web/temp/190627_113400.zip';
            $imagePaths  = [
                'D:\project\vr\web\static\image\test\1.jpg',
                'D:\project\vr\web\static\image\test\2.jpg',
            ];
    
            $zip  = new  \ZipArchive();
            //打开zip文件,OVERWRITE重写,CREATE没有就创建,参考https://php.net/manual/en/zip.constants.php
            if ( $zip -> open ($zipFileName ,  \ZipArchive::OVERWRITE | \ZIPARCHIVE::CREATE )!== TRUE ) {
                exit( "cannot create file" );
            }
            //向zip文件中添加文件$filename :function addFile ($filename, $localname = null)
            //localname:ZIP归档文件中的本地名称,将覆盖$filename
            foreach ($imagePaths as $k => $image){
                $zip->addFile($image,'\create_'.($k+1).'.jpg');
            }
            //Close opened or created archive and save changes
            $zip->close();
    }
    

    在这里插入图片描述
    2.追加:

        function addFile(){
            $imgRootPath = Yii::getAlias('@webroot/static/').'image/test';//文件路径
            $zip  = new  \ZipArchive();
    
            //打开已存在的zip文件
            if ( $zip -> open ('D:/project/vr/web/temp/190627_113400.zip')!== TRUE ) {
                echo  "cannot open file";
            }
            $zip->addFile('D:\project\vr\web\static\image\test\add1.jpg','\myadd1.jpg');
            $zip->close();
        }
    

    在这里插入图片描述
    3.删除一个文件:

            $imgRootPath = Yii::getAlias('@webroot/static/').'image/test';//文件路径
            $zip  = new  \ZipArchive();
    
            //打开已存在的zip文件
            if ( $zip -> open ('D:/project/vr/web/temp/190627_113400.zip')!== TRUE ) {
                echo  "cannot open file";
            }
            $zip->deleteName('\myadd1.jpg');
            $zip->close();
    

    4.解压文件/部分文件到指定文件夹:

            $imgRootPath = Yii::getAlias('@webroot/static/').'image/test';//文件路径
            $zip  = new  \ZipArchive();
    
            //打开已存在的zip文件
            if ( $zip -> open ('D:/project/vr/web/temp/190627_113400.zip')!== TRUE ) {
                echo  "cannot open file";
            }
            $zip->extractTo('D:/project/vr/web/temp/target');//提取全部文件
            $zip->extractTo('D:/project/vr/web/temp/partTarget', array('\create_1.jpg','\create_2.jpg'));//提取部分文件
            $zip->close();
    
    展开全文
  • PHP ZipArchive工具箱 这是开发部门,请勿在生产中使用 该库使用简化并自动执行zip文件管理。 它包括\Comodojo\Zip\ZipManager类,用于一次管理多个Zip文件(提取,添加,删除,合并)。 安装 安装 ,然后: ...
  • C++使用ZipArchive在linux中进行压缩,这方面网上的资料比较少,特别对于新手说,我是在windows中用vs2017新建linux工程,然后配置远程Linux服务器进行编译,下分步进行说明1,到ZipArchive官方网站下载源码...
  • zipArchive not found

    千次阅读 2019-04-01 19:59:34
    PhpExcel 在Ubuntu上导入excel文件,报错: [1] ErrorException in Excel2007....Uncaught Error: Class 'ZipArchive' not found in /var/www/chenxin/vendor/PHPExcel/PHPExcel/Reader/Excel2007.php:351 Stac...
  • 主要介绍了mysql zip archive 版本(5.7.19)安装教程详细介绍,需要的朋友可以参考下
  • 宝塔面板php7.3版本不支持ZipArchive导致程序无法后台直接更新的解决方法 在SSH命令行界面执行以下语句: cd /www/server/php/73/src/ext/zip/ /www/server/php/73/bin/phpize ./configure –with-...
  • 通过百度查找解决方案,下载并安装了p7zip_16.02_src_all.tar.bz2 (参考地址:https://blog.csdn.net/mr_muli/article/details/89524690),再次尝试解压失败 解决如下: 在网上百度后处理依旧报错,最后是因为在...
  • 我们在使用asp.net开发的过程中,难免会遇到对文件的操作,尤其是对文件进行压缩打包,现在.NetFramework4.5已经出来了,而4.5也新增加了许多类,其中一个类就是ZipArchive,专门针对对文件进行压缩的,挺方便的。...
  • zip archive for delphi 5
  • PHP ZipArchive 实现压缩解压Zip文件

    万次阅读 2018-07-19 14:27:16
    PHP ZipArchive 是PHP自带的扩展类,可以轻松实现ZIP文件的压缩和解压,使用前首先要确保PHP ZIP 扩展已经开启,具体开启方法就不说了,不同的平台开启PHP扩增的方法网上都有,如有疑问欢迎交流。这里整理一下常用的...
  • zipArchive

    2015-02-09 19:02:07
    IOS,zip压缩文件解压库
  • php在linux下解压zip文件,报Class ZipArchive not found,需要安装zip扩展。首先运行下面的命令: # wget http://pecl.php.net/get/zip # tar zxvf zip-1.x.x.tgz # cd zip-1.x.x 然后执行下面的命令: # /...
  • 在本篇文章里小编给大家整理了关于php利用ZipArchive类实现文件压缩与解压实例代码内容,需要的朋友们学习下。

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 135,240
精华内容 54,096
关键字:

archivezip