2013-05-11 2 views
0

내가 검증 (단축 예)가 필요 업로드 파일 형태의 번호가 양식 :다중 업로드

<form> 
<input type='file' name='file[]' class='file_upload_button'> 
<input type='file' name='file[]' class='file_upload_button'> 
<input type='file' name='file[]' class='file_upload_button'> 
<input type='file' name='file[]' class='file_upload_button'> 

<input type='submit' value='Save Draft' class='save_draft_button'> 
</form> 

을 그리고 각 업로드 입력이 파일 형식에 의해 검증되고 싶지,하지만 난에 하드를 보내고있어 무엇을해야하는지 이해하기. 이것은 내가 시도하고있는 일종이지만 분명히 옳지 않다!

if (! empty($_FILES['file']['name'][0])) { 
// VALIDATION goes here 
    } 

하지만, 예를 들어, 첫 번째 업로드 필드를 선택하는 방법을 알아낼 수 없습니다 - 나는 [ '이름'] [0]하지만 아무런 소용이 $ _FILES [ '파일']를 사용하여 시도했다 . 모든 hep는 감사하겠습니다!

+1

'인 print_r ($ _ FILES); '파일이 아마 전송되는되지 않도록 –

+3

양식이'에 enctype ='다중/폼 data'' 누락 ... 그 구조가 무엇인지 확인합니다. '

' –

+0

감사합니다 마이클! 그런 단순하고 어리석은 짓! – DorianHuxley

답변

2

우연히 어제 다음 스크립트를 작성했습니다.
이미지, PNG 또는 GIF 또는 JPEG의 크기를 조정할 수 있습니다.
'./tmp'디렉토리가 필요합니다.
원한다면이 부분을 참조하십시오.

<?php 

$html = PHP_EOL; 

if (!empty($_FILES['images'])) { 

    $finfo = new finfo(FILEINFO_MIME); 

    for ($i=0;;$i++) { 

     switch (true) {  
      case (!isset($_FILES['images']['tmp_name'][$i])): 
       break 2; 
      case (!is_uploaded_file($filename = $_FILES['images']['tmp_name'][$i])): 
      case (($type = $finfo->file($filename)) === false): 
       continue 2; 
      case ($type === 'image/png; charset=binary'): 
       $img = imagecreatefrompng($filename); 
       break; 
      case ($type === 'image/jpeg; charset=binary'): 
       $img = imagecreatefromjpeg($filename); 
       break; 
      case ($type === 'image/gif; charset=binary'): 
       $img = imagecreatefromgif($filename); 
       break; 
      default: 
       continue 2; 
     } 

     list($width, $height) = getimagesize($filename); 
     $new_width = 100; 
     $new_height = (int)($new_width * $height/$width); 
     $new_img = imagecreatetruecolor($new_width, $new_height); 
     imagecopyresampled(
      $new_img,    $img, 
      0,   0,   0,  0, 
      $new_width, $new_height, $width, $height 
     ); 

     switch (true) { 
      case ($type === 'image/png; charset=binary'): 
       imagepng($new_img, $filename); 
       break; 
      case ($type === 'image/jpeg; charset=binary'): 
       imagejpeg($new_img, $filename); 
       break; 
      default: 
       imagegif($new_img, $filename); 
     } 

     $new_filename = './tmp/'.basename($filename); 
     if (move_uploaded_file($filename,$new_filename)) 
      $html .= sprintf('<p><img src="%s" /></p>'.PHP_EOL, $new_filename); 

    } 

} 

?> 
<!DOCTYPE html> 
<html> 
<head> 
<meta charset="UTF-8" /> 
<title>Resizer</title> 
<style> 
label { display: block; } 
</style> 
</head> 
<body> 
<fieldset> 
<legend>Select Image File (PNG, JPEG, GIF available)</legend> 
<form enctype="multipart/form-data" method="post" action="<?php echo $_SERVER['SCRIPT_NAME']; ?>"> 
<label><input type="file" name="images[]" /></label> 
<label><input type="file" name="images[]" /></label> 
<label><input type="file" name="images[]" /></label> 
<label><input type="submit" value="Resize!" /></label> 
</form> 
</fieldset> 
<fieldset> 
<legend>Resized Images</legend><?php 

echo $html; 

?> 
</fieldset> 
</body> 
</html>