2013-09-24 4 views
0

업로드 된 이미지에 대해 유효성 검사를 일부 시도하고 있습니다. 이미지를 선택하여 업로드했는지 확인하면 업로드 된 이미지가없는 경우 오류 메시지가 반환됩니다. 하지만 내 방법에서는 항상 false을 반환합니다. 업로드 된 파일이 비어 있는지 확인하려면 어떻게합니까?

을 Heres 방법 :

class event{ 

     private $dbh; 
     private $post_data; 


     public function __construct($post_data, PDO $dbh){ 
       $this->dbh = $dbh; 
       $this->post_data = array_map('trim', $post_data); 

     } 

public function checkValidImages(){ 
      $errors = array(); 

      if(empty($this->post_data['event-images'])){ 
       $errors[] = 'Please select at least one image to upload.'; 
      } 

      if(count($errors) > 0){ 
       return $errors; 
      }else{ 
       return FALSE; 
      } 

     } 

하고 여기 전화 :

// Check all images are valid 
     $images = new event($_FILES, $dbh); 
     var_dump($imageErrors = $images->checkValidImages()); 

var_dump() 반환 bool(false).

을 heres 형태 :

<form name="submit-event" action="submit-event.php" method="post" enctype="multipart/form-data"> 
<div class="large-12 columns no-padding"> 
<p>Select images for this event</p><br /> 
<input type="file" class="right" name="event-images[]" size="50" multiple="multiple" /> 
</div> 
</form> 

그래서 왜 내가 어떤 이미지를 선택하지 않은 경우에도 false를 반환 나의 방법이다.

+0

var_dump()는 오류가 없음을 의미하는 bool (false)을 반환합니다. 이것은 당신이 당신의 기능을 정의한 방법입니다. – Maximus2012

+0

업로드 할 이미지를 선택하지 않고'$ _FILES [ 'event-images'] [ 'name']'의 개수를 계산하면 0 대신에 1을 반환한다는 것을 깨달았습니다. . 확실히 어떤 것을 선택하지 않으면 0을 반환해야합니까? – crm

+0

나는 그렇게 생각할 것이다. – Maximus2012

답변

0

HTML 파일 입력이 비어있는 경우에도 브라우저는 양식 요소의 이름을 계속 제출하므로 $ _FILES 배열에서 해당 항목을 계속 가져올 수 있지만 오류 코드는 UPLOAD_ERR_NO_FILE이고 파일 이름은 ""입니다. .

많은 것들이 잘못 될 수 있으므로 the error code을 확인해야합니다. 그래서 여러분의 검증 코드는 다음과 같습니다 :

$numOkayFiles = 0; 
$numIntendedFiles = 0; 
foreach ($_FILES['event-images']['error'] as $errorCode) { 
    $numIntendedFiles += ($errorCode != UPLOAD_ERR_NO_FILE); 
    switch ($errorCode) { 
    case UPLOAD_ERR_OK: 
     $numOkayFiles++; 
     break; 
    case UPLOAD_ERR_INI_SIZE: 
    case UPLOAD_ERR_FORM_SIZE: 
     $errors[] = 'Your file was bigger than the maximum allowed size.'; 
     break; 
    case UPLOAD_ERR_NO_FILE: 
     // ignore 
     break; 
    default: 
     $errors[] = 'A problem occured during file upload.'; 
    } 
} 
if ($numIntendedFiles == 0) { 
    $errors[] = 'Please select at least one image to upload.'; 
} 
관련 문제