annuaire recherche
欢迎 目录 快速参考图 基本信息 服务器要求 许可协议 变更记录 关于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 辅助函数
personnages

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
Article précédent: Article suivant: