2013-05-11 29 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>