2014-02-15 2 views
1

데이터베이스에 데이터를 업로드하기위한 양식이 있습니다.이 양식에는 양식, 숫자, 텍스트 영역 및 파일 (이미지)에 이르는 여러 입력 필드가 있습니다.file_exists로 업로드 된 파일 확인하기

양식을 제출할 때 이미지가 업로드되는지 확인한 후 업로드하는 이미지가 전체 프로세스가 포함 된 일련의 검사 (최대 파일 크기 이하, 올바른 확장 등)를 통과하는지 확인합니다. try/catch 블록은 모든 검사가 실패 할 경우 예외를 throw하도록 설정됩니다. 위를 사용할 때

$upload=$_FILES['Upload']['tmp_name']; 
if(isset($upload)) 
{ 
    if(!empty($upload) && is_uploaded_file($upload)) 
    { 
     //Checks file size,extension and uploads the file 
    } 
    else 
    { 
     //throw new Exception 
    } 
} 
else 
{ 
    //throw new Exception 
} 

그러나,는 isset 사실 반환, 어떤 파일이, 특히 isset and !empty not passing through a check for uploaded files, 일부 인터넷 검색 uploaded.Upon 존재하지 않고 스택 오버 플로우에보고하는 경우에도 다음과 같이

내 검사

은 isset은 $ _FILES가 superglobal이기 때문에 true를 리턴 할 것이고, 나는 해결책을 찾아 보았고, 결국 my_code의 isset() 대신 file_exists()를 사용했다.

file_exists()를 사용하는 나의 이유는 업로드 프로세스 중에 temp 디렉토리에 파일이 업로드 (제출)된다는 것을 의미하며,이 임시 디렉토리를 확인하면 다음과 같은 결과를 확인할 수 있습니다. 파일이 실제로 업로드되었습니다.

isset()을 file_exists로 바꾼 후에 코드가 제대로 작동하지만 올바른 진행 방법인지 또는 다른 더 좋은 대안이 있는지 궁금합니다.

나는 어떤 의견이나 조언을 기대합니다.

답변

0
$upload=$_FILES['Upload']['tmp_name']; 
if($upload) 
{} 

이를 등 큰이었다 경우에 대해 확인할 수 있습니다 심지어는 다른 오류 코드는 예를 들어,있다 파일의 임시 이름 또는 null을 제공합니다.

0

내가 사용하는 것과 error-code 주어진 $_FILES로 :

if($_FILES['Upload']['error'] == UPLOAD_ERR_OK) { 
    //seems to have worked 
} 

파일이