2011-04-30 59 views
1

我有下面的代碼寫:無法上傳圖片笨,文件類型錯誤

function upld_logo() 
    { 
     $config['upload_path'] = './images/'; 
     $config['allowed_types'] = 'gif|jpg|png'; 


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

     if (! $this->upload->do_upload()) 
     { 
      $error = array('error' => $this->upload->display_errors()); 

      $data['msg']='Sorry! Cant Upload' . $error['error']; 
      $data['main_content']='message'; 
      $this->load->view('template',$data); 


     } 
     else 
     { 
      //$data = array('upload_data' => $this->upload->data()); 

      $names = $this->upload->data(); 
      $k=$names['file_name']; 


      $data['msg']='Your Logo Successfully Uploaded. '; 
      $data['main_content']='message'; 
      $this->load->view('template',$data); 
     } 

    } 

當我上傳與名logo.gif它顯示錯誤消息,圖片文件:

的文件類型您正試圖不允許上傳。

+0

它可以在我的本地PC上運行,但上傳時顯示上面的錯誤 – 2011-04-30 17:03:14

+0

您的信息不應該是「對不起!不能上傳:文件類型....」? – Shivaas 2011-05-12 07:21:44

+0

您是否檢查過Web服務器訪問和錯誤日​​志以查找任何PHP或權限錯誤? – 2011-05-16 03:38:25

回答

1

是的我也有同樣的錯誤。 如果你改變$[allowed_types] = "*"(允許所有文件) 你會發現上傳是成功的,但你的圖像文件沒有類型!

我認爲CI庫可能有問題嗎?

4

查找您系統 - > libraries-> upload.php的線200

$this->file_type = preg_replace("/^(.+?);.*$/", "\\1", $this->file_type); 

此代碼並將此替換:

$this->file_type = preg_replace("/^(.+?);.*$/", "\\1", $_FILES[$field]['type']); 
+0

這對我有用。奇怪的是,這不是本地主機服務器上的問題,而是在現場。假設它可能與linux相關。 – jimbo2087 2013-01-24 15:22:15

0

我花了一些時間,同樣的問題。您可能會發現codeigniters默認上傳庫正在使用一些已棄用的PHP函數來查找文件MIME類型....祝您好運,我仍然試圖自行修補它。

+0

在進一步研究這個之後,似乎在某些Apache/PHP設置中不可用的Upload類中的函數是:'finfo_file'和'mime_content_type'(目前在PHP的更高版本中似乎不推薦使用其中的一個) ,另一隻是以某種方式失蹤) – ChristoKiwi 2014-08-14 23:22:47