2012-09-22 29 views
1

我有一個表單,用戶可以在此過程中編輯其公共配置文件並上傳圖片。一切工作正常,除了當用戶上傳了一張照片或者只是將其保留爲空以不更改它仍會繼續,並嘗試上載並且如果它是空的則拋出一個錯誤...我確實有一個檢查,但是它只是忽略它。CodeIgniter中的上傳表單無法正常工作

if(isset($_FILES['userfile'])) 
    { 
     $file_name = $this->session->userdata('user_id'); 
     $img = $this->custom_lib->img_upload('./upload/user/', $file_name); 
     $user_pic = 'upload/user/'.$file_name.$img['file_ext']; 
    } else { 
     $user_pic = 'upload/default.png'; 
    } 

問題我認爲是在if語句中,但是我沒有看到它可能是什麼。如果我確實選擇了一個圖片,它就可以上傳它,並且一切正常。如果我離開像場空白(不選擇文件),而不是這樣做:

$user_pic = 'upload/default.png'; 

它試圖將文件上傳......不存在...然後它拋出一個錯誤。 img_upload()函數在我自己定製的庫中,但是如果沒有提交文件,甚至不應該調用該函數。

我感謝任何幫助!

回答

1

isset即使您檢查的項目不包含任何內容,爲null或爲false,它也會返回true。

爲了避免這個問題,你用像這樣:

if(!empty($_FILES['userfile'])) 

如果$ _FILES [「userfile的」]包含的值不爲空,假的或空這隻會返回true。

希望幫助:-)。

+0

我仍然得到相同的錯誤,當我做print_r($ _ FILES ['userfile']);它返回一個數組,表示Array([name] => [type] => [tmp_name] => [error] => 4 [size] => 0) 如何避免這種情況? – user1296953

+0

如果($ _ FILES ['userfile'] ['name']!''') 修復了這個問題......但是empty()函數怎麼不起作用?我最終做了 ?有任何想法嗎? – user1296953

+0

你也可以這樣做(!empty($ _ FILES ['userfile'] ['name']))如果有幫助,我的解決方案被誤認爲我忘記了錯誤可能導致它「不是空的」。道歉。 – David