<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>

<title>Code Igniter 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">
window.onload = function() {
	myHeight = new fx.Height('nav', {duration: 400}); 
	myHeight.hide();
}
</script>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta http-equiv='expires' content='-1' />
<meta http-equiv= 'pragma' content='no-cache' />
<meta name='robots' content='all' />
<meta name='author' content='Rick Ellis' />
<meta name='description' content='Code Igniter 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.jpg" width="153" height="44" 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>Code Igniter User Guide Version 1.5.0b3</h1></td>
<td id="breadcrumb_right"><a href="../toc.html">Linear Table of Contents</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://www.codeigniter.com/">Code Igniter Home</a> &nbsp;&#8250;&nbsp;
<a href="../index.html">User Guide Home</a> &nbsp;&#8250;&nbsp;
File Uploading Class
</td>
<td id="searchbox"><form method="get" action="http://www.google.com/search"><input type="hidden" name="as_sitesearch" id="as_sitesearch" value="www.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>File Uploading Class</h1>

<p>Code Igniter's File Uploading Class permits files to be uploaded.  You can set various 
preferences, restricting the type and size of the files.</p>


<h2>The Process</h2>

<p>Uploading a file involves the following general process:</p>


<ul>
<li>An upload form is displayed, allowing a user to select a file and upload it.</li>
<li>When the form is submitted, the file is uploaded to the destination you specify.</li>
<li>Along the way, the file is validated to make sure it is allowed to be uploaded based on the preferences you set.</li>
<li>Once uploaded, the user will be shown a success message.</li>
</ul>

<p>To demonstrate this process here is brief tutorial. Afterward you'll find reference information.</p>

<h2>Creating the Upload Form</h2>



<p>Using a text editor, create a form called <dfn>upload_form.php</dfn>.  In it, place this code and save it to your <samp>applications/views/</samp>
folder:</p>


<textarea class="textarea" style="width:100%" cols="50" rows="23"><html>
<head>
<title>Upload Form</title>
</head>
<body>

<?=$error;?>

<?=form_open_multipart('upload/do_upload'); ?>

<input type="file" name="userfile" size="20" />

<br /><br />

<input type="submit" value="upload" />

</form>

</body>
</html></textarea>

<p>You'll notice we are using a form helper to create the opening form tag.  File uploads require a multipart form, so the helper 
creates the proper syntax for you.  You'll also notice we have an $error variable.  This is so we can show error messages in the event
the user does something wrong.</p>


<h2>The Success Page</h2>

<p>Using a text editor, create a form called <dfn>upload_success.php</dfn>.
In it, place this code and save it to your <samp>applications/views/</samp> folder:</p>

<textarea class="textarea" style="width:100%" cols="50" rows="20"><html>
<head>
<title>Upload Form</title>
</head>
<body>

<h3>Your file was successfully uploaded!</h3>

<ul>
<?php foreach($upload_data as $item => $value):?>
<li><?=$item;?>: <?=$value;?></li>
<?php endforeach; ?>
</ul>

<p><?=anchor('upload', 'Upload Another File!'); ?></p>

</body>
</html></textarea>


<h2>The Controller</h2>

<p>Using a text editor, create a controller called <dfn>upload.php</dfn>.  In it, place this code and save it to your <samp>applications/controllers/</samp>
folder:</p>


<textarea class="textarea" style="width:100%" cols="50" rows="43"><?php

class Upload extends Controller {
	
	function Upload()
	{
		parent::Controller();
		$this->load->helper(array('form', 'url'));
	}
	
	function index()
	{	
		$this->load->view('upload_form', array('error' => ' ' ));
	}

	function do_upload()
	{
		$this->load->library('upload');
	
		$config['upload_path'] = './uploads/'; 
		$config['allowed_types'] = 'gif|jpg|png';
		$config['max_size']	= '100';
		$config['max_width']  = '1024';
		$config['max_height']  = '768';
		
		$this->upload->initialize($config);
	
		if ( ! $this->upload->do_upload())
		{
			$error = array('error' => $this->upload->display_errors());
			
			$this->load->view('upload_form', $error);
		}	
		else
		{
			$data = array('upload_data' => $this->upload->data());
			
			$this->load->view('upload_success', $data);
		}
	}	
}
?></textarea>


<h2>The Upload Folder</h2>

<p>You'll need a destination folder for your uploaded images.  Create a folder at the root of your Code Igniter installation called
<dfn>uploads</dfn> and set its file permissions to 777.</p>


<h2>Try it!</h2>

<p>To try your form, visit your site using a URL similar to this one:</p>

<code>www.your-site.com/index.php/<var>upload</var>/</code>

<p>You should see an upload form. Try uploading an image file (either a jpg, gif, or png). If the path in your 
controller is correct it should work.</p>


<p>&nbsp;</p>

<h1>Reference Guide</h1>


<h2>Initializing the Upload Class</h2>

<p>Like most other classes in Code Igniter, the Upload class is initialized in your controller using the <dfn>$this->load->library</dfn> function:</p>

<code>$this->load->library('upload');</code>
<p>Once the Upload class is loaded, the object will be available using: <dfn>$this->upload</dfn></p>


<h2>Setting Preferences</h2>

<p>Similar to other libraries, you'll control what is allowed to be upload based on your preferences.  In the controller you 
built above you set the following preferences:</p>

<code>$config['upload_path'] = './uploads/';<br />
$config['allowed_types'] = 'gif|jpg|png';<br />
$config['max_size']	= '100';<br />
$config['max_width']  = '1024';<br />
$config['max_height']  = '768';<br />
<br />
$this->upload->initialize($config);</code>

<p>The above preferences should be fairly self-explanatory.  Below is a table describing all available preferences.</p>


<h2>Preferences</h2>

<p>The following preferences are available.  The default value indicates what will be used if you do not specify that preference.</p>

<table cellpadding="0" cellspacing="1" border="0" style="width:100%" class="tableborder">
<tr>
<th>Preference</th>
<th>Default&nbsp;Value</th>
<th>Options</th>
<th>Description</th>
</tr>

<tr>
<td class="td"><strong>upload_path</strong></td>
<td class="td">None</td>
<td class="td">None</td>
<td class="td">The path to the folder where the upload should be placed.  The folder must be writable and the path can be absolute or relative.</td>
</tr>

<tr>
<td class="td"><strong>allowed_types</strong></td>
<td class="td">None</td>
<td class="td">None</td>
<td class="td">The mime types corresponding to the types of files you allow to be uploaded.  Usually the file extension can be used as the mime type.  Separate multiple types with a pipe.</td>
</tr>


<tr>
<td class="td"><strong>overwrite</strong></td>
<td class="td">FALSE</td>
<td class="td">TRUE/FALSE (boolean)</td>
<td class="td">If set to true, if a file with the same name as the one you are uploading exists, it will be overwritten. If set to false, a number will be appended to the filename if another with the same name exists.</td>
</tr>


<tr>
<td class="td"><strong>max_size</strong></td>
<td class="td">0</td>
<td class="td">None</td>
<td class="td">The maximum size (in kilobytes) that the file can be.  Set to zero for no limit. Note:  Most PHP installations have their own limit, as specified in the php.ini file.  Usually 2 MB (or 2048 KB) by default.</td>
</tr>

<tr>
<td class="td"><strong>max_width</strong></td>
<td class="td">0</td>
<td class="td">None</td>
<td class="td">The maximum width (in pixels) that the file can be.  Set to zero for no limit.</td>
</tr>

<tr>
<td class="td"><strong>max_height</strong></td>
<td class="td">0</td>
<td class="td">None</td>
<td class="td">The maximum height (in pixels) that the file can be.  Set to zero for no limit.</td>
</tr>


<tr>
<td class="td"><strong>encrypt_name</strong></td>
<td class="td">FALSE</td>
<td class="td">TRUE/FALSE (boolean)</td>
<td class="td">If set to TRUE the file name will be converted to a random encrypted string. This can be useful if you would like the file saved with a name that can not be discerned by the person uploading it.</td>
</tr>

<tr>
<td class="td"><strong>remove_spaces</strong></td>
<td class="td">TRUE</td>
<td class="td">TRUE/FALSE (boolean)</td>
<td class="td">If set to TRUE, any spaces in the file name will be converted to underscores. This is recommended.</td>
</tr>
</table>


<h2>Setting preferences in a config file</h2>

<p>If you prefer not to set preferences using the above method, you can instead put them into a config file.
Simply create a new file called the <var>upload.php</var>,  add the <var>$config</var>
array in that file. Then save the file in: <var>config/upload.php</var> and it will be used automatically. You
will NOT need to use the <dfn>$this->upload->initialize</dfn> function if you save your preferences in a config file.</p>


<h2>Function Reference</h2>

<p>The following functions are available</p>


<h2>$this->upload->do_upload()</h2>

<p>Performs the upload based on the preferences you've set.  Note:  By default the upload routine expects the file to come from a form field 
called <dfn>userfile</dfn>, and the form must be a "multipart type:</p>

<code>&lt;form method="post" action="some_action" enctype="multipart/form-data" /></code>

<p>If you would like to set your own field name simply pass its value to the <dfn>do_upload</dfn> function:</p>

<code>
$field_name = "some_field_name";<br />
$this->upload->do_upload($field_name)</code>


<h2>$this->upload->display_errors()</h2>

<p>Retrieves any error messages if the <dfn>do_upload()</dfn> function returned false.  The function does not echo automatically, it
returns the data so you can assign it however you need.</p>

<h3>Formatting Errors</h3>
<p>By default the above function wraps any errors within &lt;p> tags.  You can set your own delimiters like this:</p>

<code>$this->upload->display_errors('<var>&lt;p></var>', '<var>&lt;/p></var>');</code>

<h2>$this->upload->data()</h2>

<p>This is a helper function that returns an array containing all of the data related to the file you uploaded. 
Here is the array prototype:</p>

<code>Array<br />
(<br />
&nbsp;&nbsp;&nbsp;&nbsp;[file_name]&nbsp;&nbsp;&nbsp;&nbsp;=> mypic.jpg<br />
&nbsp;&nbsp;&nbsp;&nbsp;[file_type]&nbsp;&nbsp;&nbsp;&nbsp;=> image/jpeg<br />
&nbsp;&nbsp;&nbsp;&nbsp;[file_path]&nbsp;&nbsp;&nbsp;&nbsp;=> /path/to/your/upload/<br />
&nbsp;&nbsp;&nbsp;&nbsp;[full_path]&nbsp;&nbsp;&nbsp;&nbsp;=> /path/to/your/upload/jpg.jpg<br />
&nbsp;&nbsp;&nbsp;&nbsp;[raw_name]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=> mypic<br />
&nbsp;&nbsp;&nbsp;&nbsp;[orig_name]&nbsp;&nbsp;&nbsp;&nbsp;=> mypic.jpg<br />
&nbsp;&nbsp;&nbsp;&nbsp;[file_ext]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=> .jpg<br />
&nbsp;&nbsp;&nbsp;&nbsp;[file_size]&nbsp;&nbsp;&nbsp;&nbsp;=> 22.2<br />
&nbsp;&nbsp;&nbsp;&nbsp;[is_image]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=> 1<br />
&nbsp;&nbsp;&nbsp;&nbsp;[image_width]&nbsp;&nbsp;=> 800<br />
&nbsp;&nbsp;&nbsp;&nbsp;[image_height] => 600<br />
&nbsp;&nbsp;&nbsp;&nbsp;[image_type]&nbsp;&nbsp;&nbsp;=> jpeg<br />
&nbsp;&nbsp;&nbsp;&nbsp;[image_size_str] => width="800" height="200"<br />
)</code>

<h3>Explanation</h3>

<p>Here is an explanation of the above array items.</p>

<table cellpadding="0" cellspacing="1" border="0" style="width:100%" class="tableborder">
<tr><th>Item</th><th>Description</th></tr>

<tr><td class="td"><strong>file_name</strong></td>
<td class="td">The name of the file that was uploaded including the file extension.</td></tr>

<tr><td class="td"><strong>file_type</strong></td>
<td class="td">The file's Mime type</td></tr>

<tr><td class="td"><strong>file_path</strong></td>
<td class="td">The absolute server path to the file</td></tr>

<tr><td class="td"><strong>full_path</strong></td>
<td class="td">The absolute server path including the file name</td></tr>

<tr><td class="td"><strong>raw_name</strong></td>
<td class="td">The file name without the extension</td></tr>

<tr><td class="td"><strong>orig_name</strong></td>
<td class="td">The original file name.  This is only useful if you use the encrypted name option.</td></tr>

<tr><td class="td"><strong>file_ext</strong></td>
<td class="td">The file extension with period</td></tr>

<tr><td class="td"><strong>file_size</strong></td>
<td class="td">The file size in kilobytes</td></tr>

<tr><td class="td"><strong>is_image</strong></td>
<td class="td">Whether the file is an image or not.  1 = image. 0 = not.</td></tr>

<tr><td class="td"><strong>image_width</strong></td>
<td class="td">Image width.</td></tr>

<tr><td class="td"><strong>image_heigth</strong></td>
<td class="td">Image height</td></tr>

<tr><td class="td"><strong>image_type</strong></td>
<td class="td">Image type.  Typically the file extension without the period.</td></tr>

<tr><td class="td"><strong>image_size_str</strong></td>
<td class="td">A string containing the width and height.  Useful to put into an image tag.</td></tr>


</table>

</div>
<!-- END CONTENT -->


<div id="footer">
<p>
Previous Topic:&nbsp;&nbsp;<a href="encryption.html">Encryption 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="table.html">HTML Table Class</a>
<p>
<p><a href="http://www.codeigniter.com">Code Igniter</a> &nbsp;&middot;&nbsp; Copyright &#169; 2006 &nbsp;&middot;&nbsp; <a href="http://www.pmachine.com">pMachine, Inc.</a></p>
</div>

</body>
</html>