2012-09-23 54 views
1

嗨我已經建立了一個網站約3個月,現在是讓我的女朋友用虛擬內容來填充它用於測試目的。在那裏,她很高興地測試和上傳文件,突然一旦她完成了大約8篇文章的上傳者決定沒有任何改變代碼等開始拒絕上傳說文件類型是不允許的。CodeIgniter再次上傳類

現在不用說,我已經通過這個上傳了一個多月的圖片,這是第一次出現這個問題。更令人困惑的是,我在其他部分使用相同的mime參數的CI上傳類,它工作正常!我檢查了$ _FILES中的mime,這是image/jpg或image/png等,所有這些都被CI認可。我也看到了關於CI 2.1.0中的錯誤,但是我在2.1.1上,我認爲這個錯誤已經修復了(或沒有),因爲錯誤之前的上傳庫中的代碼稍有不同。

無論哪種方式我推斷這是一個MIME錯誤,因爲設置允許的類型配置參數*工作正常!當然這不是理想的地方,因爲潛在的安全漏洞是驚人的。由於我還有其他工作需要繼續,所以我現在已經到了關鍵時刻了。我已經附上處理這個上傳的代碼部分,因爲我正在做一些明顯愚蠢的事情,但是否則如果其他人已經從任何地方發展了這個問題,我很想知道任何解決方法/解決方案......還有關於這可能只會讓它醜陋的腦袋變得好起來。我經常爲這些事情的神祕面而奮鬥。

if(isset($_FILES['article_main_image']) && $_FILES['article_main_image']['size'] > 0){ 

    $filename = $this->input->post('article_title') . '_' . time(); 

    $config['upload_path'] = './resource/data/tmpstore/'; 
    $config['allowed_types'] = 'gif|jpg|png|jpeg'; 
    $config['file_name'] = $filename; 

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


    if ($this->upload->do_upload('article_main_image')) 
    { 

     $uploadData = $this->upload->data(); 
     $filename = $uploadData['file_name']; 

     //Other stuff here 

    } else { 

     $this->session->set_flashdata('validationErrors', $this->upload->display_errors()); 
     $this->session->set_flashdata('postVars', $this->input->post()); 

     redirect('/admin/contenteditor/editarticle?id=' . $this->input->post('articleId')); 
    } 
} 
+0

http://stackoverflow.com/questions/9815208/codeigniter-the-filetype-you-are-attempting-to-upload-is-not-allowed/10923319#10923319 –

+0

如果你改變'jpg' /'jpeg'(或任何圖像類型)在mimes.php中模仿到'array('image/jpeg','image/pjpeg','application/octet-stream')'? – Spyros

+0

這仍然是一個問題?你現在升級到最新的CI嗎? (2.1.2)。 – PaulSkinner

回答

0

嘗試使用print_r($uploadData);調試你的上傳數據數組,看看file_type說,也許這是她嘗試上傳的圖片可能有不正確的MIME類型。