Apuntes CodeIgniter Subir una Imagen

Pasos para subir una imagen a nuestra base de datos y almacenarla en una carpeta usando el Framework CodeIgniter
Crear el Formulario

<?php if($this->session->flashdata('msg')) {  ?>
		<div class="alert alert-success" role="alert"><?php echo $this->session->flashdata('msg'); ?></div>
		<?php } ?>
		<?php echo form_open_multipart('productos/insert');?>
		    <div class="form-group">
			    <label for="exampleInputFile">Imagen Producto</label>
			    <input type="file" name="imagen" id="exampleInputFile">
			    <p class="help-block">Imagen formato PNG, JPG</p>
			 </div>
		    <div style="margin-top:15px" class="form-group">
		        <input type="submit" class="btn btncyan" value="Agregar Producto">
		    </div>
		<?php echo form_close(); ?>

Controller productos/insert

public function insert(){
	    $config = array(
			'upload_path' => "./uploads/",
			'allowed_types' => "gif|jpg|png",
			'max_size' => 0,
			'filename' => url_title($this->input->post('imagen')),
			'encrypt_name' => true
		);
		$this->load->library('upload', $config);
		if($this->upload->do_upload('imagen'))
		{
			$this->db->insert('productos', array(
				'imagen' => $this->upload->file_name
			));
		}
		$this->session->set_flashdata('msg','Insertado Correctamente!');
		$this->load->view('includes/header', $data);
        $this->load->view('includes/navbar');
        $this->load->view('productos/index');
        $this->load->view('includes/footer');
	}