blob: 17e2617c8cc6c0a9717ac93ea1e0a412459e761f [file] [log] [blame]
admina59c2a12006-10-01 19:02:11 +00001<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
Derek Allardafd99ac2008-01-19 19:59:14 +00002<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
admina59c2a12006-10-01 19:02:11 +00003<head>
4
Derek Jonesfd93d222008-05-06 15:18:50 +00005<title>Zip Encoding Class : CodeIgniter User Guide</title>
admina59c2a12006-10-01 19:02:11 +00006
7<style type='text/css' media='all'>@import url('../userguide.css');</style>
8<link rel='stylesheet' type='text/css' media='all' href='../userguide.css' />
9
10<script type="text/javascript" src="../nav/nav.js"></script>
11<script type="text/javascript" src="../nav/prototype.lite.js"></script>
12<script type="text/javascript" src="../nav/moo.fx.js"></script>
Derek Allardb3412372007-10-25 12:15:16 +000013<script type="text/javascript" src="../nav/user_guide_menu.js"></script>
admina59c2a12006-10-01 19:02:11 +000014
15<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
16<meta http-equiv='expires' content='-1' />
17<meta http-equiv= 'pragma' content='no-cache' />
18<meta name='robots' content='all' />
Derek Allard3d879d52008-01-18 19:41:32 +000019<meta name='author' content='ExpressionEngine Dev Team' />
Derek Allardd2df9bc2007-04-15 17:41:17 +000020<meta name='description' content='CodeIgniter User Guide' />
admina59c2a12006-10-01 19:02:11 +000021
22</head>
23<body>
24
25<!-- START NAVIGATION -->
26<div id="nav"><div id="nav_inner"><script type="text/javascript">create_menu('../');</script></div></div>
27<div id="nav2"><a name="top"></a><a href="javascript:void(0);" onclick="myHeight.toggle();"><img src="../images/nav_toggle.jpg" width="153" height="44" border="0" title="Toggle Table of Contents" alt="Toggle Table of Contents" /></a></div>
28<div id="masthead">
29<table cellpadding="0" cellspacing="0" border="0" style="width:100%">
30<tr>
Derek Jones6b7b11f2008-05-06 16:07:27 +000031<td><h1>CodeIgniter User Guide Version 1.6.2</h1></td>
adminc0d5d522006-10-30 19:40:35 +000032<td id="breadcrumb_right"><a href="../toc.html">Table of Contents Page</a></td>
admina59c2a12006-10-01 19:02:11 +000033</tr>
34</table>
35</div>
36<!-- END NAVIGATION -->
37
38
39<!-- START BREADCRUMB -->
40<table cellpadding="0" cellspacing="0" border="0" style="width:100%">
41<tr>
42<td id="breadcrumb">
Derek Jones7a9193a2008-01-21 18:39:20 +000043<a href="http://codeigniter.com/">CodeIgniter Home</a> &nbsp;&#8250;&nbsp;
admina59c2a12006-10-01 19:02:11 +000044<a href="../index.html">User Guide Home</a> &nbsp;&#8250;&nbsp;
45Zip Encoding Class
46</td>
Derek Allardbc030912007-06-24 18:25:29 +000047<td id="searchbox"><form method="get" action="http://www.google.com/search"><input type="hidden" name="as_sitesearch" id="as_sitesearch" value="codeigniter.com/user_guide/" />Search User Guide&nbsp; <input type="text" class="input" style="width:200px;" name="q" id="q" size="31" maxlength="255" value="" />&nbsp;<input type="submit" class="submit" name="sa" value="Go" /></form></td>
admina59c2a12006-10-01 19:02:11 +000048</tr>
49</table>
50<!-- END BREADCRUMB -->
51
52<br clear="all" />
53
54
55<!-- START CONTENT -->
56<div id="content">
57
58
59<h1>Zip Encoding Class</h1>
Derek Allardd2df9bc2007-04-15 17:41:17 +000060<p>CodeIgniter's Zip Encoding Class classes permit you to create Zip archives. Archives can be downloaded to your
admine95014f2006-10-01 21:44:52 +000061desktop or saved to a directory.</p>
admina59c2a12006-10-01 19:02:11 +000062
63
admin70d553b2006-10-01 19:20:24 +000064<h2>Initializing the Class</h2>
Derek Allardd2df9bc2007-04-15 17:41:17 +000065<p>Like most other classes in CodeIgniter, the Zip class is initialized in your controller using the <dfn>$this->load->library</dfn> function:</p>
admin70d553b2006-10-01 19:20:24 +000066
67<code>$this->load->library('zip');</code>
admine95014f2006-10-01 21:44:52 +000068<p>Once loaded, the Zip library object will be available using: <dfn>$this->zip</dfn></p>
adminb1fddc02006-10-09 21:29:07 +000069
admin70d553b2006-10-01 19:20:24 +000070
admine95014f2006-10-01 21:44:52 +000071<h2>Usage Example</h2>
admin70d553b2006-10-01 19:20:24 +000072
admine95014f2006-10-01 21:44:52 +000073<p>This example demonstrates how to compress a file, save it to a folder on your server, and download it to your desktop.</p>
74
75<code>
76$name = 'mydata1.txt';<br />
77$data = 'A Data String!';<br />
78<br />
79$this->zip->add_data($name, $data);<br />
80<br />
81// Write the zip file to a folder on your server. Name it "my_backup.zip"<br />
82$this->zip->archive('/path/to/directory/my_backup.zip');
83<br /><br />
84 // Download the file to your desktop. Name it "my_backup.zip"<br />
85$this->zip->download('my_backup.zip');
86</code>
87
admin78ce3cc2006-10-02 02:58:03 +000088<h1>Function Reference</h1>
admine95014f2006-10-01 21:44:52 +000089
90<h2>$this->zip->add_data()</h2>
91
92<p>Permits you to add data to the Zip archive. The first parameter must contain the name you would like
admin9f8243b2006-10-23 20:00:15 +000093given to the file, the second parameter must contain the file data as a string:</p>
admine95014f2006-10-01 21:44:52 +000094
95<code>
96$name = 'my_bio.txt';<br />
97$data = 'I was born in an elevator...';<br />
98<br />
99$this->zip->add_data($name, $data);
100</code>
101
admin9f8243b2006-10-23 20:00:15 +0000102<p>You are allowed multiple calls to this function in order to
admine95014f2006-10-01 21:44:52 +0000103add several files to your archive. Example:</p>
admin70d553b2006-10-01 19:20:24 +0000104
105<code>
106$name = 'mydata1.txt';<br />
107$data = 'A Data String!';<br />
108$this->zip->add_data($name, $data);<br />
109<br />
110$name = 'mydata2.txt';<br />
111$data = 'Another Data String!';<br />
112$this->zip->add_data($name, $data);<br />
admin70d553b2006-10-01 19:20:24 +0000113</code>
114
admine95014f2006-10-01 21:44:52 +0000115<p>Or you can pass multiple files using an array:</p>
admin70d553b2006-10-01 19:20:24 +0000116
admin73fbde22006-10-01 19:26:15 +0000117<code>
118$data = array(<br />
admine95014f2006-10-01 21:44:52 +0000119&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'mydata1.txt' => 'A Data String!',<br />
admin9f8243b2006-10-23 20:00:15 +0000120&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'mydata2.txt' => 'Another Data String!'<br />
admin73fbde22006-10-01 19:26:15 +0000121&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;);<br />
122<br />
123$this->zip->add_data($data);<br />
124<br />
admine95014f2006-10-01 21:44:52 +0000125$this->zip->download('my_backup.zip');
admin73fbde22006-10-01 19:26:15 +0000126</code>
admina59c2a12006-10-01 19:02:11 +0000127
admine95014f2006-10-01 21:44:52 +0000128<p>If you would like your compressed data organized into sub-folders, include the path as part of the filename:</p>
129
130<code>
131$name = '<kbd>personal/</kbd>my_bio.txt';<br />
132$data = 'I was born in an elevator...';<br />
133<br />
134$this->zip->add_data($name, $data);
135</code>
136
137<p>The above example will place <dfn>my_bio.txt</dfn> inside a folder called <kbd>personal</kbd>.</p>
138
139
140<h2>$this->zip->add_dir()</h2>
141
142<p>Permits you to add a directory. Usually this function is unnecessary since you can place your data into folders when
143using <dfn>$this->zip->add_data()</dfn>, but if you would like to create an empty folder you can do so. Example:</p>
144
145<code>$this->zip->add_dir('myfolder'); // Creates a folder called "myfolder"</code>
146
147
admin9f8243b2006-10-23 20:00:15 +0000148
149<h2>$this->zip->read_file()</h2>
150
151<p>Permits you to compress a file that already exists somewhere on your server. Supply a file path and the zip class will
152read it and add it to the archive:</p>
153
154<code>
155$path = '/path/to/photo.jpg';<br /><br />
156$this->zip->read_file($path);
157<br /><br />
158 // Download the file to your desktop. Name it "my_backup.zip"<br />
159$this->zip->download('my_backup.zip');
160</code>
161
Derek Allard1ea127a2008-04-04 12:26:46 +0000162<p>If you would like the Zip archive to maintain the directory structure of the file in it, pass <kbd>TRUE</kbd> (boolean) in the
Derek Allardc6441282007-07-04 23:54:32 +0000163second parameter. Example:</p>
admin9f8243b2006-10-23 20:00:15 +0000164
165
166<code>
167$path = '/path/to/photo.jpg';<br /><br />
168$this->zip->read_file($path, <kbd>TRUE</kbd>);
169<br /><br />
170 // Download the file to your desktop. Name it "my_backup.zip"<br />
171$this->zip->download('my_backup.zip');
172</code>
173
174<p>In the above example, <dfn>photo.jpg</dfn> will be placed inside two folders: <kbd>path/to/</kbd></p>
175
176
177
178<h2>$this->zip->read_dir()</h2>
179
180<p>Permits you to compress a folder (and its contents) that already exists somewhere on your server. Supply a file path to the
181directory and the zip class will recursively read it and recreate it as a Zip archive. All files contained within the
Rick Ellis6afaff22007-07-12 23:07:48 +0000182supplied path will be encoded, as will any sub-folders contained within it. Example:</p>
admin9f8243b2006-10-23 20:00:15 +0000183
184<code>
185$path = '/path/to/your/directory/';<br /><br />
186$this->zip->read_dir($path);
187<br /><br />
188 // Download the file to your desktop. Name it "my_backup.zip"<br />
189$this->zip->download('my_backup.zip');
190</code>
191
192
193
194
admine95014f2006-10-01 21:44:52 +0000195<h2>$this->zip->archive()</h2>
196
197<p>Writes the Zip-encoded file to a directory on your server. Submit a valid server path ending in the file name. Make sure the
198directory is writable (666 or 777 is usually OK). Example:</p>
199
200<code>$this->zip->archive('/path/to/folder/myarchive.zip'); // Creates a file named myarchive.zip</code>
201
202
203<h2>$this->zip->download()</h2>
204
Derek Allard1ea127a2008-04-04 12:26:46 +0000205<p>Causes the Zip file to be downloaded from your server. The function must be passed the name you would like the zip file called.
admine95014f2006-10-01 21:44:52 +0000206Example:</p>
207
208<code>$this->zip->download('latest_stuff.zip'); // File will be named "latest_stuff.zip"</code>
209
210<p class="important"><strong>Note:</strong>&nbsp; Do not display any data in the controller in which you call this function since it sends various server headers
211that cause the download to happen and the file to be treated as binary.</p>
212
213
214<h2>$this->zip->get_zip()</h2>
215
216<p>Returns the Zip-compressed file data. Generally you will not need this function unless you want to do something unique with the data.
217Example:</p>
218
219<code>
220$name = 'my_bio.txt';<br />
221$data = 'I was born in an elevator...';<br />
222<br />
223$this->zip->add_data($name, $data);<br /><br />
224
225$zip_file = $this->zip->get_zip();
226</code>
227
228
229<h2>$this->zip->clear_data()</h2>
230
231<p>The Zip class caches your zip data so that it doesn't need to recompile the Zip archive for each function you use above.
232If, however, you need to create multiple Zips, each with different data, you can clear the cache between calls. Example:</p>
233
234<code>
235$name = 'my_bio.txt';<br />
236$data = 'I was born in an elevator...';<br />
237<br />
238$this->zip->add_data($name, $data);<br />
239$zip_file = $this->zip->get_zip();<br />
240<br />
241<kbd>$this->zip->clear_data();</kbd>
242<br /><br />
243
244$name = 'photo.jpg';<br />
admin9f8243b2006-10-23 20:00:15 +0000245$this->zip->read_file("/path/to/photo.jpg"); // Read the file's contents<br />
admine95014f2006-10-01 21:44:52 +0000246<br /><br />
247$this->zip->download('myphotos.zip');
248</code>
249
250
251
252
253
254
255
256
257
admina59c2a12006-10-01 19:02:11 +0000258
259
260
261
262</div>
263<!-- END CONTENT -->
264
265
266<div id="footer">
267<p>
Derek Allard9da4dbc2007-04-03 11:39:35 +0000268Previous Topic:&nbsp;&nbsp;<a href="xmlrpc.html"> XML-RPC Class</a>
admina59c2a12006-10-01 19:02:11 +0000269&nbsp;&nbsp;&nbsp;&middot;&nbsp;&nbsp;
270<a href="#top">Top of Page</a>&nbsp;&nbsp;&nbsp;&middot;&nbsp;&nbsp;
271<a href="../index.html">User Guide Home</a>&nbsp;&nbsp;&nbsp;&middot;&nbsp;&nbsp;
272Next Topic:&nbsp;&nbsp;<a href="../helpers/array_helper.html">Array Helper</a>
Derek Allardc6441282007-07-04 23:54:32 +0000273</p>
Derek Jones07870432008-02-13 03:49:26 +0000274<p><a href="http://codeigniter.com">CodeIgniter</a> &nbsp;&middot;&nbsp; Copyright &#169; 2006-2008 &nbsp;&middot;&nbsp; <a href="http://ellislab.com/">Ellislab, Inc.</a></p>
admina59c2a12006-10-01 19:02:11 +0000275</div>
276
277</body>
278</html>