目录搜索
欢迎目录快速参考图基本信息服务器要求许可协议变更记录关于CodeIgniter安装下载 CodeIgniter安装指导从老版本升级疑难解答介绍开始CodeIgniter 是什么?CodeIgniter 速记表支持特性应用程序流程图模型-视图-控制器架构目标教程内容提要加载静态内容创建新闻条目读取新闻条目结束语常规主题CodeIgniter URL控制器保留字视图模型辅助函数使用 CodeIgniter 类库创建你自己的类库使用 CodeIgniter 适配器创建适配器创建核心系统类钩子 - 扩展框架的核心自动装载资源公共函数URI 路由错误处理缓存调试应用程序以CLI方式运行管理应用程序处理多环境PHP替代语法安全开发规范类库参考基准测试类日历类购物车类配置类Email 类加密类文件上传类表单验证详解FTP 类图像处理类输入类Javascript 类语言类装载类迁移类输出类分页类模板解析器类安全类Session 类HTML 表格类引用通告类排版类单元测试类URI 类User-Agent 类表单验证XML-RPC 和 XML-RPC 服务器Zip 编码类缓存适配器适配器参考适配器数据库类Active Record 类数据库缓存类自定义函数调用数据库配置连接你的数据库数据库快速入门例子代码字段数据数据库维护类查询辅助函数数据库类查询生成查询记录集表数据事务数据库工具类JavaScript类辅助函数参考数组辅助函数CAPTCHA 辅助函数Cookie Helper日期辅助函数目录辅助函数下载辅助函数Email 辅助函数文件辅助函数表单辅助函数HTML辅助函数Inflector 辅助函数语言辅助函数数字辅助函数路径辅助函数安全辅助函数表情辅助函数字符串辅助函数文本辅助函数排版辅助函数URL 辅助函数XML 辅助函数
文字

CodeIgniter 用户指南 版本 2.1.0

编辑文档、查看近期更改请 登录 或 注册  找回密码
查看原文

Zip 编码类

CodeIgniter的zip编码类允许你创建ZIP压缩文档。文档可以保存在你的桌面或者某个文件夹里

初始化

与其他CodeIgniter里的类一样,ZIP类在控制器里完成初始化工作,函数:$this->load->library

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

一旦加载,ZIP库对象可以用$this->zip来使用

使用样例

这个例子演示了如何压缩一个文件并保存到你服务器一个文件夹,然后下载到你的桌面上。

$name = 'mydata1.txt';
$data = 'A Data String!';

$this->zip->add_data($name, $data);

// 在你的服务器的文件夹里写.zip文件。命名为"my_backup.zip"
$this->zip->archive('/path/to/directory/my_backup.zip');

// 下载此文件到桌面,命名为"my_backup.zip"
$this->zip->download('my_backup.zip');

函数参考

$this->zip->add_data()

添加数据进zip文件里. 第一个参数是文件名, 第二个参数是你要添加的数据的字符串格式:

$name = 'my_bio.txt';
$data = 'I was born in an elevator...';

$this->zip->add_data($name, $data);

允许你多次调用这个函数按顺序的添加若干个文件到你的存档。例子:

$name = 'mydata1.txt';
$data = 'A Data String!';
$this->zip->add_data($name, $data);

$name = 'mydata2.txt';
$data = 'Another Data String!';
$this->zip->add_data($name, $data);

或者你可以使用一个数组来传递多个文件(的值):

$data = array(
                'mydata1.txt' => 'A Data String!',
                'mydata2.txt' => 'Another Data String!'
            );

$this->zip->add_data($data);

$this->zip->download('my_backup.zip');

如果你希望将压缩后的数据放入子文件夹内,请把路径作为文件名的一部分包含进去:

$name = 'personal/my_bio.txt';
$data = 'I was born in an elevator...';

$this->zip->add_data($name, $data);

上面的例子将放置 my_bio.txt 到一个叫personal的文件夹内。

$this->zip->add_dir()

允许你添加一个目录。通常这个函数是不必要的,因为当你使用$this->zip->add_data(), 可以把你的数据放进目录里,但是如果你想要创建一个空目录的话你也可以这样做。例子:

$this->zip->add_dir('myfolder'); // Creates a folder called "myfolder"

$this->zip->read_file()

允许你压缩一个服务器某处存在的文件。提供一个文件路径,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');

如果你想压缩文档保持原来文件的目录结构,可以把第二个参数设置为 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/to/

$this->zip->read_dir()

允许你压缩一个服务器某处存在的文件夹(以及它里面的文件和子文件夹)。提供一个文件夹路径,zip类将递归读取它并重新创建添加到存档。 你所提供的路径下面的所有文件都会被压缩进来,也包括所有子文件夹。例如:

$path = '/path/to/your/directory/';

$this->zip->read_dir($path);

// 将文件下载到你的桌面上,命名为 "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/to/your.

$this->zip->archive()

将Zip压缩文件写入服务器的一个目录下。请提交一个有效的服务器路径,以文件名作为结尾,并确保那个目录是可写的(权限为666或者777都可以)。例如:

$this->zip->archive('/path/to/folder/myarchive.zip'); // 创建一个名为 myarchive.zip 的文件

$this->zip->download()

本函数将使用户从你的服务器上下载一个Zip文件。你必须把你想要使用的文件名作为参数传递给函数。例如:

$this->zip->download('latest_stuff.zip'); // 文件将被命名为"latest_stuff.zip"

说明:  在调用本函数的控制器中不要显示任何数据,因为本函数将发送多个服务器header,从而使文件以二进制的形式被下载。

$this->zip->get_zip()

返回经过Zip压缩后的文件数据。通常情况下你不需要用到本函数,除非你想对数据做特殊处理。例如:

$name = 'my_bio.txt';
$data = 'I was born in an elevator...';

$this->zip->add_data($name, $data);

$zip_file = $this->zip->get_zip();

$this->zip->clear_data()

Zip编码类会对你的zip数据进行缓存,因此,调用上面的各个函数时,你不需要每次都重新建立Zip文件。然而,如果你要创建多个有着各自不同数据的Zip文件的话,你可以在调用期间清理掉缓存。例如:

$name = 'my_bio.txt';
$data = 'I was born in an elevator...';

$this->zip->add_data($name, $data);
$zip_file = $this->zip->get_zip();

$this->zip->clear_data();

$name = 'photo.jpg';
$this->zip->read_file("/path/to/photo.jpg"); // 读取文件内容


$this->zip->download('myphotos.zip');

 

翻译贡献者: architectcom, felee, Hex, lomatus, skey, xwjie, yinzhili, yygcom
最后修改: 2012-02-08 20:23:04
上一篇:下一篇: