Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to upload image in CodeIgniter?

In view

 <?php echo form_open_multipart('welcome/do_upload');?>
 <input type="file" name="userfile" size="20" />

In controler

function do_upload()
{
    $config['upload_path'] = './uploads/';
    $config['allowed_types'] = 'gif|jpg|png';
    $config['max_size'] = '100';
    $config['max_width']  = '1024';
    $config['max_height']  = '768';
    $config['overwrite'] = TRUE;
    $config['encrypt_name'] = FALSE;
    $config['remove_spaces'] = TRUE;
    if ( ! is_dir($config['upload_path']) ) die("THE UPLOAD DIRECTORY DOES NOT EXIST");
    $this->load->library('upload', $config);
    if ( ! $this->upload->do_upload('userfile')) {
        echo 'error';
    } else {

        return array('upload_data' => $this->upload->data());
    }
}

And I call this function like this

 $this->data['data'] = $this->do_upload();

and view this image:

<ul>
<?php foreach ($data['upload_data'] as $item => $value):?>
<li><?php echo $item;?>: <?php echo $value;?></li>
<?php endforeach; ?>
</ul>

I don't know what's the error.

like image 202
darshan Avatar asked Jun 26 '13 09:06

darshan


People also ask

What is Do_upload in codeigniter?

$this->upload->do_upload()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 userfile , and the form must be a "multipart type: <form method="post" action="some_action" enctype="multipart/form-data" />


1 Answers

It seems the problem is you send the form request to welcome/do_upload, and call the Welcome::do_upload() method in another one by $this->do_upload().

Hence when you call the $this->do_upload(); within your second method, the $_FILES array would be empty.

And that's why var_dump($data['upload_data']); returns NULL.

If you want to upload the file from welcome/second_method, send the form request to the welcome/second_method where you call $this->do_upload();.

Then change the form helper function (within the View) as follows1:

// Change the 'second_method' to your method name
echo form_open_multipart('welcome/second_method');

File Uploading with CodeIgniter

CodeIgniter has documented the Uploading process very well, by using the File Uploading library.

You could take a look at the sample code in the user guide; And also, in order to get a better understanding of the uploading configs, Check the Config items Explanation section at the end of the manual page.

Also there are couple of articles/samples about the file uploading in CodeIgniter, you might want to consider:

  • http://code.tutsplus.com/tutorials/how-to-upload-files-with-codeigniter-and-ajax--net-21684
  • http://runnable.com/UhIc93EfFJEMAADX/how-to-upload-file-in-codeigniter
  • http://jamshidhashimi.com/image-upload-with-codeigniter-2/
  • http://code.tutsplus.com/tutorials/how-to-upload-files-with-codeigniter-and-ajax--net-21684
  • http://hashem.ir/CodeIgniter/libraries/file_uploading.html (CodeIgniter 3.0-dev User Guide)

Just as a side-note: Make sure that you've loaded the url and form helper functions before using the CodeIgniter sample code:

// Load the helper files within the Controller
$this->load->helper('form');
$this->load->helper('url');

// Load the helper files within the application/config/autoload
$autoload['helper'] = array('form', 'url');


1. The form must be "multipart" type for file uploading. Hence you should use `form_open_multipart()` helper function which returns: ``
like image 167
Hashem Qolami Avatar answered Oct 23 '22 18:10

Hashem Qolami