2013-11-27 3 views
0

Заголовок говорит, что все.Загрузка файла с использованием CodeIgniter не работает

Форма в виде:

<tr> 
     <form action="<?=base_url()?>index.php/admin/product_add" method="post" enctype="multipart/form-data"> 
      <td><input type="text" name="pid"></td> 
      <td><input type="text" name="name"></td> 
      <td><input type="file" name="image" id = "image"></td> 
      <td><input type="text" name="price"></td> 
      <td><textarea name="description"></textarea></td> 
      <td><input type="text" name="type"></td> 
      <td> 
       <input type="submit" value="add"> 
      </td> 
     </form> 
    </tr> 

Функция используется в контроллере:

  public function product_add() 
    { 
     $this->load->helper(array('form','url')); 
     $this->load->library('form_validation'); 
     /*upload stuff*/ 
     $config = array(); 
     $config['upload_path'] = base_url()."imgs/products/"; 
     $config['allowed_types'] = 'jpg|png|jpeg'; 
     $config['max_size'] = '9999'; 
     $config['max_width'] = '1024'; 
     $config['max_height'] = '768'; 

     $this->load->library('upload', $config); 

     $_POST['price']=str_replace(",", ".", $_POST['price']); 
     $this->form_validation->set_rules('pid','Product ID','required'); 
     $this->form_validation->set_rules('name','Denumire Produs','required'); 
     $this->form_validation->set_rules('image','Imagine','required'); 
     $this->form_validation->set_rules('price','Pret','required'); 
     $this->form_validation->set_rules('description','Descriere','required'); 
     $this->form_validation->set_rules('type','Tip','required'); 

     if (! $this->upload->do_upload('image')) 
     { 
      $error = array('error' => $this->upload->display_errors()); 
      $this->load->view('admin/produse', $error); 
      echo "epic fail"; 
     } 
     else 
     { 
      if ($this->form_validation->run() == FALSE) 
      { 
       echo "FAIL";  
      } 
      else 
      { 
       echo "asdsad"; 
       $this->db_actions->addProduct($_POST["pid"],$_POST["name"],$_POST["image"],$_POST["price"],$_POST["description"],$_POST["type"]); 
       redirect(base_url()."index.php/admin/produse"); 
      } 
     } 
    } 

Я перебора мою задницу с этим весь день, так что я серьезно расстроено атм.

Я получаю сообщение об ошибке, потому что if (! $ This-> upload-> do_upload ('image')) действительно ложный. Every.Single.Damn.Time.

Что я здесь делаю неправильно?

+0

только догадка здесь, но это:. '$ Конфиг [ 'upload_path'] = base_url() "ГИМ/Продукты /";' может потребоваться быть путь к серверу. '$ _SERVER ['DOCUMENT_ROOT']. '/ Imgs/products /';' –

+0

Пробовал это так же, все еще получая ошибку. –

ответ

0

Это сообщение об ошибке не дает вам ничего полезного? Похоже, что упоминал Кай Цин, вам нужно использовать путь к серверу (файловой системе) по EllisLab's File Upload Docs, а не по URL-адресу.

+0

Нет, ошибка совершенно бесполезна к сожалению. –

+0

Оказывается, это было. –

0

здесь некоторые из моих кодов загрузки файлов

функция загрузки() {

  $config['upload_path'] = './files/contracts-csv/'; 
      $config['allowed_types'] = 'csv'; 
      $config['max_size']  = '4096';  
      $config['overwrite']  = TRUE; 

      $this->load->library('upload', $config); 
      $this->upload->display_errors('', ''); 

      if (!$this->upload->do_upload("image")) { 
        echo $this->upload->display_errors(); die(); 
        $this->data['error'] = array('error' => $this->upload->display_errors()); 
       //error message 
      } else { 
       //do something 
      } 
      redirect("contracts/upload_exit"); 
    } 
0
$config['upload_path'] = "var/www/your_app_images_path"; 
$config['allowed_types'] = "gif|jpg|png|jpeg"; 
$config['overwrite'] = false; 
$config['remove_spaces'] = true; 
$this->load->library('upload', $config); 

Проверьте upload_path это должно быть как выше.

if (!$this->upload->do_upload("file_fieldName")) {       
    pr($this->upload->display_errors());exit; 
} 
Смежные вопросы