<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Zip Encoding Class : CodeIgniter User Guide</title>

<style type='text/css' media='all'>@import url('../userguide.css');</style>
<link rel='stylesheet' type='text/css' media='all' href='../userguide.css' />

<script type="text/javascript" src="../nav/nav.js"></script>
<script type="text/javascript" src="../nav/prototype.lite.js"></script>
<script type="text/javascript" src="../nav/moo.fx.js"></script>
<script type="text/javascript" src="../nav/user_guide_menu.js"></script>

<meta http-equiv='expires' content='-1' />
<meta http-equiv= 'pragma' content='no-cache' />
<meta name='robots' content='all' />
<meta name='author' content='ExpressionEngine Dev Team' />
<meta name='description' content='CodeIgniter User Guide' />

</head>
<body>

<!-- START NAVIGATION -->
<div id="nav"><div id="nav_inner"><script type="text/javascript">create_menu('../');</script></div></div>
<div id="nav2"><a name="top"></a><a href="javascript:void(0);" onclick="myHeight.toggle();"><img src="../images/nav_toggle_darker.jpg" width="154" height="43" border="0" title="Toggle Table of Contents" alt="Toggle Table of Contents" /></a></div>
<div id="masthead">
<table cellpadding="0" cellspacing="0" border="0" style="width:100%">
<tr>
<td><h1>CodeIgniter User Guide Version 1.7</h1></td>
<td id="breadcrumb_right"><a href="../toc.html">Table of Contents Page</a></td>
</tr>
</table>
</div>
<!-- END NAVIGATION -->


<!-- START BREADCRUMB -->
<table cellpadding="0" cellspacing="0" border="0" style="width:100%">
<tr>
<td id="breadcrumb">
<a href="http://codeigniter.com/">CodeIgniter Home</a> &nbsp;&#8250;&nbsp;
<a href="../index.html">User Guide Home</a> &nbsp;&#8250;&nbsp;
Zip Encoding Class
</td>
<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>
</tr>
</table>
<!-- END BREADCRUMB -->

<br clear="all" />


<!-- START CONTENT -->
<div id="content">


<h1>Zip Encoding Class</h1>
<p>CodeIgniter's Zip Encoding Class classes permit you to create Zip archives. Archives can be downloaded to your
desktop or saved to a directory.</p>


<h2>Initializing the Class</h2>
<p>Like most other classes in CodeIgniter, the Zip class is initialized in your controller using the <dfn>$this->load->library</dfn> function:</p>

<code>$this->load->library('zip');</code>
<p>Once loaded, the Zip library object will be available using: <dfn>$this->zip</dfn></p>


<h2>Usage Example</h2>

<p>This example demonstrates how to compress a file, save it to a folder on your server, and download it to your desktop.</p>

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

<h1>Function Reference</h1>

<h2>$this->zip->add_data()</h2>

<p>Permits you to add data to the Zip archive. The first parameter must contain the name you would like
given to the file, the second parameter must contain the file data as a string:</p>

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

<p>You are allowed multiple calls to this function in order to
add several files to your archive.  Example:</p>

<code>
$name = 'mydata1.txt';<br />
$data = 'A Data String!';<br />
$this->zip->add_data($name, $data);<br />
<br />
$name = 'mydata2.txt';<br />
$data = 'Another Data String!';<br />
$this->zip->add_data($name, $data);<br />
</code>

<p>Or you can pass multiple files using an array:</p>

<code>
$data = array(<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'mydata1.txt' => 'A Data String!',<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'mydata2.txt' => 'Another Data String!'<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;);<br />
<br />
$this->zip->add_data($data);<br />
<br />
$this->zip->download('my_backup.zip');
</code>

<p>If you would like your compressed data organized into sub-folders, include the path as part of the filename:</p>

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

<p>The above example will place <dfn>my_bio.txt</dfn> inside a folder called <kbd>personal</kbd>.</p>


<h2>$this->zip->add_dir()</h2>

<p>Permits you to add a directory.  Usually this function is unnecessary since you can place your data into folders when
using <dfn>$this->zip->add_data()</dfn>, but if you would like to create an empty folder you can do so.  Example:</p>

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



<h2>$this->zip->read_file()</h2>

<p>Permits you to compress a file that already exists somewhere on your server.  Supply a file path and the zip class will
read it and add it to the archive:</p>

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

<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
second parameter.  Example:</p>


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

<p>In the above example, <dfn>photo.jpg</dfn> will be placed inside two folders:  <kbd>path/to/</kbd></p>



<h2>$this->zip->read_dir()</h2>

<p>Permits you to compress a folder (and its contents) that already exists somewhere on your server.  Supply a file path to the 
directory and the zip class will recursively read it and recreate it as a Zip archive.  All files contained within the
supplied path will be encoded, as will any sub-folders contained within it.  Example:</p>

<code>
$path = '/path/to/your/directory/';<br /><br />
$this->zip->read_dir($path);
<br /><br />
 // Download the file to your desktop.  Name it "my_backup.zip"<br />
$this->zip->download('my_backup.zip');
</code>




<h2>$this->zip->archive()</h2>

<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
directory is writable (666 or 777 is usually OK). Example:</p>

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


<h2>$this->zip->download()</h2>

<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.
Example:</p>

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

<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
that cause the download to happen and the file to be treated as binary.</p>


<h2>$this->zip->get_zip()</h2>

<p>Returns the Zip-compressed file data.  Generally you will not need this function unless you want to do something unique with the data.
Example:</p>

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

$zip_file = $this->zip->get_zip();
</code>


<h2>$this->zip->clear_data()</h2>

<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.
If, however, you need to create multiple Zips, each with different data, you can clear the cache between calls. Example:</p>

<code>
$name = 'my_bio.txt';<br />
$data = 'I was born in an elevator...';<br />
<br />
$this->zip->add_data($name, $data);<br />
$zip_file = $this->zip->get_zip();<br />
<br />
<kbd>$this->zip->clear_data();</kbd>
<br /><br />

$name = 'photo.jpg';<br />
$this->zip->read_file("/path/to/photo.jpg"); // Read the file's contents<br />
<br /><br />
$this->zip->download('myphotos.zip');
</code>













</div>
<!-- END CONTENT -->


<div id="footer">
<p>
Previous Topic:&nbsp;&nbsp;<a href="xmlrpc.html"> XML-RPC Class</a>
&nbsp;&nbsp;&nbsp;&middot;&nbsp;&nbsp;
<a href="#top">Top of Page</a>&nbsp;&nbsp;&nbsp;&middot;&nbsp;&nbsp;
<a href="../index.html">User Guide Home</a>&nbsp;&nbsp;&nbsp;&middot;&nbsp;&nbsp;
Next Topic:&nbsp;&nbsp;<a href="../helpers/array_helper.html">Array Helper</a>
</p>
<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>
</div>

</body>
</html>