©
Ce document utiliseManuel du site Web PHP chinoisLibérer
CodeIgniter的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(混合) - 单个文件路径或文件数组=>数据对
$ data(array) - 文件内容(如果$ 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 |
返回类型: |
布尔 |
$ path(string) - 文件的路径
$ archive_filepath(mixed) - 新文件名/路径(字符串)或(boolean)是否保留原始文件路径
返回:成功时为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 |
返回类型: |
布尔 |
$ path(string) - 目录的路径
$ preserve_filepath(bool) - 是否保持原始路径
$ root_path(string) - 要从归档目录中排除的路径的一部分
返回:成功时为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 |
---|