登录  /  注册

如何使用PHP创建zip压缩文件

青灯夜游
发布: 2019-02-15 10:57:26
原创
7741人浏览过

使用压缩文件可以节省磁盘空间;且压缩文件更小,便于网络传输,效率高。本篇文章给大家介绍使用php创建zip压缩文件的方法,希望对大家有所帮助。

如何使用PHP创建zip压缩文件

在PHP中有一个ZipArchive类,可以很容易地用来创建zip文件。下面通过示例来介绍如何在PHP中创建zip文件。【视频教程推荐:PHP教程

创建一个新的zip文件

以下代码将创建一个新的zip文件(test_new.zip)并向其中添加一些文件。

<?php
$zip = new ZipArchive;
if ($zip->open(&#39;test_new.zip&#39;, ZipArchive::CREATE) === TRUE)
{
    // 将文件添加到zip文件
    $zip->addFile(&#39;test.txt&#39;);
    $zip->addFile(&#39;test.pdf&#39;);
 
    // 将random.txt文件添加到zip并将其重命名为newfile.txt
    $zip->addFile(&#39;random.txt&#39;, &#39;newfile.txt&#39;);
 
    // 将有指定文本的new.txt文件添加到zip文件中
    $zip->addFromString(&#39;new.txt&#39;, &#39;要添加到new.txt文件中的文本&#39;);
 
    // 关闭zip文件
    $zip->close();
}
?>
登录后复制

2.jpg

代码说明:

第2行:创建ZipArchive类的对象

第3行:用于创建并打开一个名为test_new.zip的文件,以便我们可以向其中添加文件。标志ZipArchive::CREATE指定我们要创建一个新的zip文件

第6行和第7行:用于将文件添加到zip文件中。

第10行:用于将名为random.txt的文件添加到zip文件中,并在zip文件中将其重命名为newfile.txt。

第13行:用于添加新文件new.txt,文件内容为“要添加到new.txt文件的文本”。

第16行:关闭并保存对zip文件的更改。

注意:有时在使用文件的相对路径时可能会出现问题。如果使用路径有任何问题,那么我们也可以使用文件的绝对路径

覆盖现有的zip文件

如果要覆盖现有的zip文件,我们可以使用类似于以下的代码。该标志ZipArchive::OVERWRITE指定覆盖现有的zip文件。

<?php
$zip = new ZipArchive;
if ($zip->open(&#39;test_overwrite.zip&#39;, ZipArchive::OVERWRITE) === TRUE)
{
    // 将文件添加到zip文件
    $zip->addFile(&#39;test.txt&#39;);
    $zip->addFile(&#39;test.pdf&#39;);
 
    // 关闭zip文件
    $zip->close();
}
?>
登录后复制

3.jpg

代码说明

此代码将创建一个文件test_overwrite.zip,如果该文件已经存在,文件将被此新文件覆盖。

创建一个新的zip文件并在指定文件夹中添加文件

<?php
$zip = new ZipArchive;
if ($zip->open(&#39;test_folder.zip&#39;, ZipArchive::CREATE) === TRUE)
{
    // 将文件添加到zip文件中的demo_folder文件夹内
    $zip->addFile(&#39;text.txt&#39;, &#39;demo_folder/test.txt&#39;);
    $zip->addFile(&#39;test.pdf&#39;, &#39;demo_folder/test.pdf&#39;);
 
    // 将random.txt文件添加到zip文件中的demo_folder文件夹内,并重命名为newfile.txt
    $zip->addFile(&#39;random.txt&#39;, &#39;demo_folder/newfile.txt&#39;);
 
    //  将有指定内容的new.txt添加到zip文件中的demo_folder文件夹
    $zip->addFromString(&#39;demo_folder/new.txt&#39;, &#39;要添加到new.txt文件中的文本&#39;);
 
    // 关闭zip文件
    $zip->close();
}
?>
登录后复制

4.jpg

代码说明

上面的代码会将zip文件中的不同文件添加到demo_folder文件夹中

addfile函数的第二个参数可用于将文件存储在新文件夹中

addFromString函数中的第一个参数可用于将文件存储在新文件夹中

创建一个新的zip文件并将文件添加到不同的文件夹中

<?php
$zip = new ZipArchive;
if ($zip->open(&#39;test_folder_change.zip&#39;, ZipArchive::CREATE) === TRUE)
{
    // 将文件添加到zip文件
    $zip->addFile(&#39;text.txt&#39;, &#39;demo_folder/test.txt&#39;);
    $zip->addFile(&#39;test.pdf&#39;, &#39;demo_folder1/test.pdf&#39;);
 
    // 关闭zip文件
    $zip->close();
}
?>
登录后复制

5-1.jpg

5-2.jpg

5-3.jpg

代码说明

我们将zip文件中的test.txt文件存储到demo_folder文件夹中,将test.pdf文件存储到demo_folder1文件夹中

创建一个zip文件,其中包含一个目录中的所有文件

<?php
$zip = new ZipArchive;
if ($zip->open(&#39;test_dir.zip&#39;, ZipArchive::OVERWRITE) === TRUE)
{
    if ($handle = opendir(&#39;demo_folder&#39;))
    {
        // 添加目录中的所有文件
        while (false !== ($entry = readdir($handle)))
        {
            if ($entry != "." && $entry != ".." && !is_dir(&#39;demo_folder/&#39; . $entry))
            {
                $zip->addFile(&#39;demo_folder/&#39; . $entry);
            }
        }
        closedir($handle);
    }
 
    $zip->close();
}
?>
登录后复制

6.jpg

代码说明

第5-16行:打开一个目录,并创建一个包含该目录中所有文件的zip文件

第5行:打开目录

第8行:获取目录中每个文件的名称

第10行:跳过“.”和“..”以及任何其他目录

第12行:将文件添加到zip文件中

第15行:关闭目录

第18行:关闭zip文件

创建一个zip文件,其中包含多个目录的所有文件

以下代码将这些目录中的不同文件夹和文件添加到zip文件中

<?php
$zip = new ZipArchive;
if ($zip->open(&#39;test_files_dirs.zip&#39;, ZipArchive::OVERWRITE) === TRUE)
{
    // 添加 directory1
    if ($handle = opendir(&#39;demo_folder/directory1/&#39;))
    {
        while (false !== ($entry = readdir($handle)))
        {
            if ($entry != "." && $entry != "..")
            {
                $zip->addFile(&#39;demo_folder/directory1/&#39; . $entry);
            }
        }
        closedir($handle);
    }
 
    // 添加 directory2
    if ($handle = opendir(&#39;demo_folder/directory2/&#39;))
    {
        while (false !== ($entry = readdir($handle)))
        {
            if ($entry != "." && $entry != "..")
            {
                $zip->addFile(&#39;demo_folder/directory2/&#39; . $entry);
            }
        }
        closedir($handle);
    }
 
    // 添加 directory3
    if ($handle = opendir(&#39;demo_folder/directory3/&#39;))
    {
        while (false !== ($entry = readdir($handle)))
        {
            if ($entry != "." && $entry != "..")
            {
                $zip->addFile(&#39;demo_folder/directory3/&#39; . $entry);
            }
        }
        closedir($handle);
    }
    $zip->close();
}
?>
登录后复制

7-1.jpg

7-2.jpg

7-3.jpg

7-4.jpg

代码说明

第6-42行:将目录directory1,directory2和directory3中的所有文件添加到zip文件中的相应目录中。

以上就是本篇文章的全部内容,希望能对大家的学习有所帮助。更多精彩内容大家可以关注php中文网相关教程栏目!!!

以上就是如何使用PHP创建zip压缩文件的详细内容,更多请关注php中文网其它相关文章!

智能AI问答
PHP中文网智能助手能迅速回答你的编程问题,提供实时的代码和解决方案,帮助你解决各种难题。不仅如此,它还能提供编程资源和学习指导,帮助你快速提升编程技能。无论你是初学者还是专业人士,AI智能助手都能成为你的可靠助手,助力你在编程领域取得更大的成就。
相关标签:
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
最新问题
关于CSS思维导图的课件在哪? 课件
凡人来自于2024-04-16 10:10:18
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2024 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号