복수의 파일은 input에서 다른 name을 사용하거나 배열로 조직화한 정보를 얻을 수 있는데, 다중 파일 업로드 폼은 다음의 조건으로 구성할 수 있습니다.

<form action="file-upload.php" enctype="multipart/form-data" method="post">
<input name="userfile[]" type="file" />
<input name="userfile[]" type="file" />
<input name="userfile[]" type="file" />
<input name="userfile[]" type="file" />
<input name="userfile[]" type="file" />
<input type="submit" value="파일 전송" />
</form>

폼 전송시 file-upload.php 파일에서 다음 예와 같이 구성하여 정보를 받을 수 있습니다.

<?php 
 foreach($_FILES['userfile']['name'] as $key => $val){ 
      if(($_FILES['userfile']['size'][$key] > 0){ 
           if($_FILES['userfile']['error'][$key] === UPLOAD_ERR_OK){ 
                if(is_uploaded_file($_FILES['userfile']['tmp_name'][$key])){ 
                     $filename = md5("habony_".$_FILES['userfile']['name'][$key]); 
                     if(move_uploaded_file($_FILES['userfile']['tmp_name'][$key],"./upload/".$filename)){ 
                           mysql_query("insert into $db value( 
                           '', 
                           '".addslashes($_FILES['userfile']['name'][$key])."' 
                           )"); 
                     } 
                } 
           } 
      } 
 } 
 ?>

복수 파일 업로드를 허용하더라도 최대 파일 크기를 제한하려면 다음과 같을 것입니다.

 <form action="" method="post" enctype="multipart/form-data"><br /> 
   <input type="hidden" name="MAX_FILE_SIZE" value="300000" /><br /> 
   <input name="userfile[]" type="file" /><br /> 
   <input name="userfile[]" type="file" /><br /> 
   <input name="userfile[]" type="file" /><br /> 
   <input name="userfile[]" type="file" /><br /> 
   <input name="userfile[]" type="file" /><br /> 
   <input type="submit" value="파일 전송" /> 
 </form>  

<?php 
 if(is_array($_FILES['userfile']['name'])){ 
     $filesize = 0; 
     foreach($_FILES['userfile']['size'] as $key => $val){ 
          if($_FILES['userfile']['size'][$key] > 0){ 
               $filesize += $_FILES['userfile']['size'][$key]; 
          } 
     } 
     // 사용자 입력필드 파일 제한 크기 
     $maxfilesize = (int)$_POST['MAX_FILE_SIZE']; 
     if($filesize > $maxfilesize){ 
          echo "허용 파일용량을 초과하였습니다."; 
     } else { 
       foreach($_FILES['userfile']['name'] as $key => $val){ 
         if($_FILES['userfile']['size'][$key] > 0){ 
               if($_FILES['userfile']['error'][$key] === UPLOAD_ERR_OK){ 
               if(is_uploaded_file($_FILES['userfile']['tmp_name'][$key])){ 
                 $filename = md5("habony_".$_FILES['userfile']['name'][$key]); 
                 $tmpfilename = $_FILES['userfile']['tmp_name'][$key]; 
                 if(move_uploaded_file($tmpfilename,"./upload/".$filename)){ 
                   mysql_query("insert into $db value ( 
                                '', 
                                '".addslashes($_FILES['userfile']['name'][$key])."' 
                                       )"); 
                                  } 
                        } 
                   } 
              } 
          } 
     } 
 } 
 ?>

0 댓글