Samir Sheikh
Samir Sheikh

Reputation: 2401

Codeigniter uploaded file not move to folder

I want to upload file in folder, following is my code for upload file in folder, the code is successfully working in my local system and also file moved to folder but on server side i got 'The upload path does not appear to be valid'. when i used $config['upload_path'] = './uploads/'; but when i used $config['upload_path'] = './assets/images/store/category'; i got success message but uploaded file is not showing in category folder.

Following is my code.

Controller

<?php  
   class Upload extends CI_Controller {

      public function __construct() { 
         parent::__construct(); 
         $this->load->helper(array('form', 'url')); 
      }

      public function index() { 
         echo "Tst";
         $this->load->view('Upload_form', array('error' => ' ' )); 
      } 

      public function Test_do_upload() { 
         $config['upload_path']   = './uploads/'; 
         $config['allowed_types'] = 'gif|jpg|png'; 
         $config['max_size']      = 100; 
         $config['max_width']     = 1024; 
         $config['max_height']    = 768;  
         $this->load->library('upload', $config);

         if ( ! $this->upload->do_upload('userfile')) {
            $error = array('error' => $this->upload->display_errors()); 
            $this->load->view('Upload_form', $error); 
         }

         else { 
            $data = array('upload_data' => $this->upload->data()); 
            echo '<pre>';
            print_r($data);
          //  $this->load->view('upload_success', $data); 
         } 
      } 
   } 
?>

View ( form)

   <head> 
      <title>Upload Form</title> 
   </head>

   <body> 
      <?php echo $error;?> 
      <?php echo form_open_multipart('upload/Test_do_upload');?> 

         <input type = "file" name = "userfile" size = "20" /> 
         <br /><br /> 
         <input type = "submit" value = "upload" /> 
         <?= form_close(); ?>       
   </body>

</html>

View of success upload

<html>

   <head> 
      <title>Upload Form</title> 
   </head>

   <body>  
      <h3>Your file was successfully uploaded!</h3>  

      <ul> 
         <?phpforeach ($upload_data as $item => $value):?> 
         <li><?php echo $item;?>: <?php echo $value;?></li> 
         <?phpendforeach; ?>
      </ul>  

      <p><?php echo anchor('upload', 'Upload Another File!'); ?></p>  
   </body>

</html>

Code is working in my local system but on server side file not move to folder. I also given permission.

Upvotes: 0

Views: 3178

Answers (2)

imlokeshs
imlokeshs

Reputation: 315

May be try this code and try to create directory if its not created. Else print $error variable to find out what kind of upload error. May be this will be helpful. And remove form tag from your view its repeated.

      $dir_path= 'assets/admin/uploads/course_images/';
      if (!is_dir($dir_path)) {
            mkdir($dir_path, 0777, TRUE);
        }
        $new_name = time().$this->input->post('Course_code');
        //move_uploaded_file($_FILES['file']['tmp_name'], $dir_path);
        $config['upload_path'] = $dir_path;
        $config['allowed_types'] = 'gif|jpg|png';
        $config['encrypt_name'] = FALSE;
        $config['max_size'] = '1000';
        $config['file_name'] = $new_name;
        $this->load->library('upload', $config);
        $this->upload->initialize($config);
        if ( ! $this->upload->do_upload('file'))
        {
            // no file uploaded or failed upload
            $error = array('error' => $this->upload->display_errors());
            /*Print Error*/
        }else{
            /*Insert Code*/
        }

Upvotes: 0

Rejoanul Alam
Rejoanul Alam

Reputation: 5398

I can see there are two form tag could fire this problem. So revise it

  <head> 
      <title>Upload Form</title> 
   </head>

   <body> 
      <?php echo $error;?> 

      <form action ="<?php echo site_url('upload/Test_do_upload');?>" method="post" enctype="multipart/form-data">
         <input type = "file" name = "userfile" size = "20" /> 
         <br /><br /> 
         <input type = "submit" value = "upload" /> 
      </form> 

   </body>

</html>

Upvotes: 1

Related Questions