2011-04-19 57 views
0

這是我上傳的模型笨圖片上傳 - 不能得到錯誤信息顯示

function upload_avatar() 
    { 
     $id = $this->tank_auth->get_user_id(); 

     //config upload parameters and upload image 
     $config = array(
      'allowed_types' => 'jpeg|jpg|png', 
      'upload_path' => $this->upload_path, 
      'max_size' => 2048, 
      'encrypt_name' => TRUE, 
      'overwrite' => FALSE, 
     ); 
     $this->load->library('upload', $config); 
     $this->upload->do_upload(); 

     //get upload data, config, resize uploaded image, save in avatars subfolder 
     $image_data = $this->upload->data(); 

     if ($image_data['file_size'] < 2048) { 

      $config = array(
       'source_image' => $image_data['full_path'], 
       'new_image' => $this->upload_path . '/avatars', 
       'maintain_ratio' => TRUE, 
       'width' => 125, 
       'height' => 125 
      ); 
      $this->load->library('image_lib', $config); 
      $this->image_lib->resize(); 

      //only burn avatar path to user_profiles table if no upload errors 
      if (!$this->upload->display_errors()) { 
       $data = array('avatar' => base_url() . 'images/avatars/' . $image_data['file_name']); 
       $this->db->where('id', $id); 
       $this->db->update('user_profiles', $data); 
      } 

      //delete the original file from server 
      $this->load->helper('file'); 
      unlink($image_data['full_path']); 

     } else { 

    echo $this->upload->display_errors(); 

     } 
    } 

我不能得到錯誤信息來呼應直到瀏覽器時,我嘗試上傳一個文件> 2MB。

公平地說,CI會忽略這個大文件,並在文件爲< 2MB時正確上傳。

唯一的問題是我無法獲得錯誤消息在前端顯示給suer一些反饋。

任何想法這裏有什麼不對?

回答

0

您的post_max_size限制小於2MB? (http://ca3.php.net/manual/en/ini.core.php#ini.post-max-size)如果是這樣,該文件可能已被丟棄,然後您的代碼被調用。

更新:

如果你把在else塊你的函數調用,只是在出口下降(「太大」);你能看到錯誤嗎?如果是這樣的話,您可能會面臨一個問題,如何關閉這個呼叫。

+0

yes''max_size'=> 2048,'限制文件小於2MB - 但是當我註釋掉那一行時,我仍然沒有得到錯誤信息 – pepe 2011-04-19 00:47:55

+0

'post_max_size'在php.ini中定義,而不是你的腳本。 – preinheimer 2011-04-19 00:51:14

+0

哦 - 無論如何,如果我增加''max_size''我**可以**上傳圖像> 2MB,所以我不認爲php.ini配置在任何方式,防止它 – pepe 2011-04-19 00:57:05

1
$config['upload_path'] = 'uploads/category/'.$id.'/'; 
     //echo $file_name;die; 
     //echo $config['upload_path']; 
     $config['allowed_types'] = 'gif|jpg|jpeg|png'; 
     $config['max_size'] = '2048'; 
     $config['max_width'] = '1920'; 
     $config['max_height'] = '1280'; 
     $this->load->library('upload'); 
     foreach ($_FILES as $key => $value) { 
      //print_r($key); 

      if (!empty($key['name'])) { 

       $this->upload->initialize($config); 
       if (!$this->upload->do_upload($key)) { 
        // echo 'test';die; 
//     rmdir('uploads/category/'.$id); 
        $errors = $this->upload->display_errors(); 
        flashMsg($errors); 
       } 
} 
} 

試試這個!