PHP & Others

POST 다중 파일 업로드

컨텐츠 정보

본문

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

 <form action="file-upload.php" method="post" enctype="multipart/form-data"><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> 

폼전송시 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
등록된 댓글이 없습니다.
Today's proverb
지식에 투자하는 것이 가장 이윤이 높다. (프랭클린)