2013-05-11 39 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 
    } 

但我無法弄清楚如何選擇,例如,第一次上傳場​​ - 我用$ _FILES [「文件」] [「名」] [0],但無濟於事嘗試。任何hep將不勝感激!

+1

'的print_r($ _ FILES);'看,其結構是什麼... – 2013-05-11 15:55:53

+3

您的形式缺少'ENCTYPE =「多部分/形式data''這樣的文件可能不被髮送。 '

' – 2013-05-11 15:56:43

+0

謝謝邁克爾!這麼簡單,愚蠢的錯誤! – DorianHuxley 2013-05-11 16:10:00

回答

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>