在PHP中有一个ZipArchive类,可以很容易地用来创建zip文件。下面通过示例来介绍如何在PHP中创建zip文件。【视频教程推荐:PHP教程】
创建一个新的zip文件
以下代码将创建一个新的zip文件(test_new.zip)并向其中添加一些文件。
?php$zip = new ZipArchive;if ($zip- open( test_new.zip , ZipArchive::CREATE) === TRUE) // 将文件添加到zip文件 $zip- addFile( test.txt $zip- addFile( test.pdf // 将random.txt文件添加到zip并将其重命名为newfile.txt $zip- addFile( random.txt , newfile.txt // 将有指定文本的new.txt文件添加到zip文件中 $zip- addFromString( new.txt , 要添加到new.txt文件中的文本 // 关闭zip文件 $zip- close();?
代码说明:
第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( test_overwrite.zip , ZipArchive::OVERWRITE) === TRUE) // 将文件添加到zip文件 $zip- addFile( test.txt $zip- addFile( test.pdf // 关闭zip文件 $zip- close();?
代码说明
此代码将创建一个文件test_overwrite.zip,如果该文件已经存在,文件将被此新文件覆盖。
创建一个新的zip文件并在指定文件夹中添加文件
?php$zip = new ZipArchive;if ($zip- open( test_folder.zip , ZipArchive::CREATE) === TRUE) // 将文件添加到zip文件中的demo_folder文件夹内 $zip- addFile( text.txt , demo_folder/test.txt $zip- addFile( test.pdf , demo_folder/test.pdf // 将random.txt文件添加到zip文件中的demo_folder文件夹内,并重命名为newfile.txt $zip- addFile( random.txt , demo_folder/newfile.txt // 将有指定内容的new.txt添加到zip文件中的demo_folder文件夹 $zip- addFromString( demo_folder/new.txt , 要添加到new.txt文件中的文本 // 关闭zip文件 $zip- close();?
代码说明
上面的代码会将zip文件中的不同文件添加到demo_folder文件夹中
addfile函数的第二个参数可用于将文件存储在新文件夹中
addFromString函数中的第一个参数可用于将文件存储在新文件夹中
创建一个新的zip文件并将文件添加到不同的文件夹中
?php$zip = new ZipArchive;if ($zip- open( test_folder_change.zip , ZipArchive::CREATE) === TRUE) // 将文件添加到zip文件 $zip- addFile( text.txt , demo_folder/test.txt $zip- addFile( test.pdf , demo_folder1/test.pdf // 关闭zip文件 $zip- close();?
代码说明
我们将zip文件中的test.txt文件存储到demo_folder文件夹中,将test.pdf文件存储到demo_folder1文件夹中
创建一个zip文件,其中包含一个目录中的所有文件
?php$zip = new ZipArchive;if ($zip- open( test_dir.zip , ZipArchive::OVERWRITE) === TRUE) if ($handle = opendir( demo_folder )) // 添加目录中的所有文件 while (false !== ($entry = readdir($handle))) if ($entry != . $entry != .. !is_dir( demo_folder/ . $entry)) $zip- addFile( demo_folder/ . $entry); closedir($handle); $zip- close();?
代码说明
第5-16行:打开一个目录,并创建一个包含该目录中所有文件的zip文件
第5行:打开目录
第8行:获取目录中每个文件的名称
第10行:跳过“.”和“..”以及任何其他目录
第12行:将文件添加到zip文件中
第15行:关闭目录
第18行:关闭zip文件
创建一个zip文件,其中包含多个目录的所有文件
以下代码将这些目录中的不同文件夹和文件添加到zip文件中
?php$zip = new ZipArchive;if ($zip- open( test_files_dirs.zip , ZipArchive::OVERWRITE) === TRUE) // 添加 directory1 if ($handle = opendir( demo_folder/directory1/ )) while (false !== ($entry = readdir($handle))) if ($entry != . $entry != .. ) $zip- addFile( demo_folder/directory1/ . $entry); closedir($handle); // 添加 directory2 if ($handle = opendir( demo_folder/directory2/ )) while (false !== ($entry = readdir($handle))) if ($entry != . $entry != .. ) $zip- addFile( demo_folder/directory2/ . $entry); closedir($handle); // 添加 directory3 if ($handle = opendir( demo_folder/directory3/ )) while (false !== ($entry = readdir($handle))) if ($entry != . $entry != .. ) $zip- addFile( demo_folder/directory3/ . $entry); closedir($handle); $zip- close();?
代码说明
第6-42行:将目录directory1,directory2和directory3中的所有文件添加到zip文件中的相应目录中。
以上就是本篇文章的全部内容,希望能对大家的学习有所帮助。更多精彩内容大家可以关注php 相关教程栏目!!!
以上就是如何使用PHP创建zip压缩文件的详细内容,PHP教程
郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。
新闻热点
疑难解答