php 簡單多檔上傳

多檔上傳只要在 input file 的地方加上 multiple,並把 name 設為陣列就可以了。

  1. <form action="upload.php" method="POST" enctype="multipart/form-data">   
  2.     <input type="file" name="files[]" multiple/>   
  3.     <input type="submit"/>   
  4. </form>  


上傳後用迴圈把值取出來。

  1. foreach($_FILES['files']['tmp_name'as $key => $tmp_name ){   
  2.     $file_name = $key.$_FILES['files']['name'][$key];   
  3.     $file_size =$_FILES['files']['size'][$key];   
  4.     $file_tmp =$_FILES['files']['tmp_name'][$key];   
  5.     $file_type=$_FILES['files']['type'][$key];   
  6. }  


如果想要限制上傳圖片格式。

  1. $file_ext=explode('.',$_FILES['image']['name'][$key])   ;   
  2. $file_ext=end($file_ext);     
  3. $file_ext=strtolower(end(explode('.',$_FILES['image']['name'][$key])));     
  4. if(in_array($file_ext,$extensions ) === false){   
  5.     $errors[]="extension not allowed";   
  6. }           


寫入資料庫。

  1. $query="INSERT into upload_data (`EMP_CODE`,`FILE_NAME`,`FILE_SIZE`,`FILE_TYPE`) VALUES('$codes','$file_name','$file_size','$file_type'); ";  


移動檔案。

  1. if(is_dir($dir)==false){   
  2.     move_uploaded_file($file_tmp,images/".$file_name);   
  3. }  


如果資料夾不存在則建立一個。

  1. if(is_dir($dir)==false){   
  2.     mkdir("$dir", 0700);   
  3. }  


如果檔名重複則重新命名。

  1. if(is_dir("emp_data/$codes/".$file_name)==false){   
  2.     move_uploaded_file($file_tmp,"$desired_dir/".$file_name);   
  3. }else{   
  4.      rename($file_tmp"$desired_dir/".$file_name);   
  5. }  


Multiple File Upload with PHP and MySQL

留言