cycero cycero - 4 months ago 17
PHP Question

Upload multiple files in CodeIgniter

In my CodeIgniter project I'm uploading files during the project creation. Here's the uploading function:

function uploadFiles(){

$this->load->library('upload');
$error = 0;
$projectName = $_POST['projectname'];
mkdir('./uploads/'.$projectName);

for($i=0; $i<count($_FILES); $i++)
{

$_FILES['userfile']['name'] = $_FILES['files']['name'][$i];
$_FILES['userfile']['type'] = $_FILES['files']['type'][$i];
$_FILES['userfile']['tmp_name'] = $_FILES['files']['tmp_name'][$i];
$_FILES['userfile']['error'] = $_FILES['files']['error'][$i];
$_FILES['userfile']['size'] = $_FILES['files']['size'][$i];

$config['upload_path'] = './uploads/'.$projectName;
$config['allowed_types'] = 'xml|etl';
$config['max_size'] = '0';
$config['overwrite'] = TRUE;

$this->upload->initialize($config);

if($this->upload->do_upload())
{
$error += 0;
}else{
$error += 1;
}
}

if($error > 0){ return FALSE; }else{ return TRUE; }

}


And I call this function in the create_project function like this:

public function create_project() {
$this->load->library('form_validation');

$this->form_validation->set_rules('projectname', 'Project name', 'required');

$this->form_validation->set_message('required', 'This is an obligatory field');

if($this->form_validation->run() == FALSE) {
$this->load->view('project_creation_view');
} else {
$this->load->model('Project_management_model');
$this->Project_management_model->create_project();
$this->uploadFiles();
}
}


However this does not do anything. The files are not being uploaded. Even an empty directory is not being created. Could anybody help me to find the error?

Thanks.

Answer

You can Upload any number of Files..

$config['upload_path'] = 'upload/Main_category_product/';
$path=$config['upload_path'];
$config['allowed_types'] = 'gif|jpg|jpeg|png';
$config['max_size'] = '1024';
$config['max_width'] = '1920';
$config['max_height'] = '1280';
$this->load->library('upload');

foreach ($_FILES as $fieldname => $fileObject)  //fieldname is the form field name
{
    if (!empty($fileObject['name']))
    {
        $this->upload->initialize($config);
        if (!$this->upload->do_upload($fieldname))
        {
            $errors = $this->upload->display_errors();
            flashMsg($errors);
        }
        else
        {
             // Code After Files Upload Success GOES HERE
        }
    }
}