2012-09-22 5 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

은 검사중인 항목에 아무것도 포함되지 않았거나 null이거나 false 인 경우에도 true를 반환합니다.

이 문제를 방지하려면, 당신과 같이 를 사용하십시오 $ _FILES [ 'userfile로는'], 널 (null) 허위 또는 비어 있지 않은 값이 포함 된 경우

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

이는 true를 돌려줍니다.

도움이 되길 바랍니다 :-).

+0

print_r ($ _ FILES [ 'userfile']);을 수행 할 때 여전히 동일한 오류가 발생합니다. 배열 ([이름] => [유형] => [tmp_name] => [오류] => 4 [크기] => 0) 배열을 반환합니다 어떻게 이것을 피할 수 있습니까? – user1296953

+0

($ _ FILES [ 'userfile'] [ 'name']! = '') 문제를 해결 한 경우 ... 그러나 empty() 함수가 작동하지 않는 이유는 무엇입니까? 어떤 아이디어? – user1296953

+0

if (! empty ($ _ FILES [ 'userfile'] [ 'name'])) 도움이된다면 오류가 "비어 있지 않아야"할 수 있다는 것을 잊어 버린 것처럼 내 솔루션을 착각했습니다. 사과. – David

관련 문제