在线文档教程

Zip编码类 | Zip Encoding Class

Zip Encoding Class

CodeIgniter的Zip编码类允许您创建Zip存档。档案可以下载到您的桌面或保存到一个目录。

  • 使用Zip编码类

使用Zip编码类

初始化类

像CodeIgniter中的大多数其他类一样,使用$ this-> load-> library函数在您的控制器中初始化Zip类:

$this->load->library('zip'

加载后,Zip库对象将可用:

$this->zip

用法示例

此示例演示如何压缩文件,将其保存到服务器上的文件夹,然后将其下载到桌面。

$name = 'mydata1.txt'; $data = 'A Data String!'; $this->zip->add_data($name, $data // Write the zip file to a folder on your server. Name it "my_backup.zip" $this->zip->archive('/path/to/directory/my_backup.zip' // Download the file to your desktop. Name it "my_backup.zip" $this->zip->download('my_backup.zip'

类参考

class CI_Zip$compression_level = 2

要使用的压缩级别。

它的范围可以从0到9,其中9是最高的,0是有效禁用压缩的:

$this->zip->compression_level = 0;

add_data($filepath[, $data = NULL])

参数:$ filepath(mixed) - 单个文件路径或文件数组=数据对$ data(array) - 文件内容(如果$ filepath是数组,则忽略)
返回类型:void

  • $ filepath(混合) - 单个文件路径或文件数组=>数据对

Return type: void

将数据添加到Zip存档。可以在单个和多个文件模式下工作。

添加单个文件时,第一个参数必须包含您想要给文件的名称,而第二个参数必须包含文件内容:

$ name ='mydata1.txt'; $ data ='数据字符串!'; $ this-> zip-> add_data($ name,$ data); $ name ='mydata2.txt'; $ data ='另一个数据字符串!'; $ this-> zip-> add_data($ name,$ data);

添加多个文件时,第一个参数必须包含file => contents对,第二个参数将被忽略:

$data = array( 'mydata1.txt' => 'A Data String!', 'mydata2.txt' => 'Another Data String!' $this->zip->add_data($data

如果您希望将压缩数据组织到子目录中,只需将路径包含为文件名的一部分即可:

$name = 'personal/my_bio.txt'; $data = 'I was born in an elevator...'; $this->zip->add_data($name, $data

上面的例子将my_bio.txt放在一个名为personal的文件夹中。

add_dir($directory)

参数:$ directory(混合) - 目录名称字符串或多个目录的数组
返回类型:void

  • $ directory混合) - 目录名称字符串或多个目录的数组

Return type: void

允许你添加一个目录。通常这种方法是不必要的,因为当使用`$ this-> zip-> add_data()`时,你可以将数据放入目录中,但是如果你想创建一个空目录,你可以这样做:

$this->zip->add_dir('myfolder' // Creates a directory called "myfolder"

read_file($path[, $archive_filepath = FALSE])

参数:$ path(string) - 文件路径$ archive_filepath(mixed) - 新文件名/路径(字符串)或(boolean)是否保留原始文件路径
返回:成功为TRUE,失败为FALSE
返回类型:布尔

  • $ pathstring) - 文件的路径

返回:成功时为TRUE,失败时为FALSE

Return type: bool

允许您压缩已存在于服务器某处的文件。提供文件路径,zip类将读取它并将其添加到存档中:

$path = '/path/to/photo.jpg'; $this->zip->read_file($path // Download the file to your desktop. Name it "my_backup.zip" $this->zip->download('my_backup.zip'

如果您希望Zip存档保持文件的目录结构,请在第二个参数中传递TRUE(布尔值)。例:

$path = '/path/to/photo.jpg'; $this->zip->read_file($path, TRUE // Download the file to your desktop. Name it "my_backup.zip" $this->zip->download('my_backup.zip'

在上面的例子中,photo.jpg将被放置到路径/到/目录中。

您也可以为即时添加的文件指定一个新名称(包含路径):

$path = '/path/to/photo.jpg'; $new_path = '/new/path/some_photo.jpg'; $this->zip->read_file($path, $new_path // Download ZIP archive containing /new/path/some_photo.jpg $this->zip->download('my_archive.zip'

read_dir($path[, $preserve_filepath = TRUE[, $root_path = NULL]])

参数:$ path(string) - 目录的路径$ preserve_filepath(bool) - 是否保留原始路径$ root_path(string) - 要从归档目录中排除的路径的一部分
返回:成功为TRUE,失败为FALSE
返回类型:布尔

  • $ pathstring) - 目录的路径

返回:成功时为TRUE,失败时为FALSE

返回类型:布尔值

允许您压缩已存在于服务器某处的目录(及其内容)。提供目录的路径,zip类将递归读取并重新创建为Zip存档。包含在提供的路径中的所有文件将被编码,其中包含的任何子目录也将被编码。例:

$ path ='/ path / to / your / directory /'; $这 - > zip-> read_dir($路径); //将文件下载到桌面。将其命名为“my_backup.zip”$ this-> zip-> download('my_backup.zip');

默认情况下,Zip存档将把第一个参数中列出的所有目录放在zip中。如果您希望忽略目标目录前面的树,则可以在第二个参数中传递FALSE(布尔值)。例:

$path = '/path/to/your/directory/'; $this->zip->read_dir($path, FALSE

这将在内部创建一个名为“directory”的ZIP目录,然后所有子目录都将正确存储在该目录中,但不会包含路径/ path /目录

archive($filepath)

参数:$ filepath(字符串) - 目标zip档案的路径
返回:成功为TRUE,失败为FALSE
返回类型:布尔

  • $ filepath字符串) - 目标zip档案的路径

返回:成功时为TRUE,失败时为FALSE

Return type: bool

将Zip编码文件写入服务器上的目录。提交以文件名结尾的有效服务器路径。确保该目录是可写的(755通常是可以的)。例:

$this->zip->archive('/path/to/folder/myarchive.zip' // Creates a file named myarchive.zip

download($filename = 'backup.zip')

参数:$ filename(字符串) - 存档文件名
返回类型:void

  • $ filename字符串) - 存档文件名

Return type: void

导致Zip文件从您的服务器下载。你必须传递你想要的zip文件名称。例:

$this->zip->download('latest_stuff.zip' // File will be named "latest_stuff.zip"

注意

不要在调用此方法的控制器中显示任何数据,因为它会发送各种服务器标题,导致发生下载并将文件视为二进制文件。

get_zip()

返回:Zip文件内容
返回类型:

clear_data()

Return type:void