WEB ◆ TS Library ◆ 熱衷分享 ◆ 享受教學相長 ◆ 無形的網絡擁有熱情溫度的傳遞

4-9. 一次多檔上傳的學習

準備表單, 準備可以選擇多檔的檔案欄位

開新檔案 upload007.php, 儲存在 ref 資料夾。

imgFile[ ] 表示接收到的檔案以陣列方式接收。

multiple="multiple" 表示可以多個檔案被同時選取。

<h1>一次選取多檔上傳</h1>
 
<form name="uploadForm" enctype="multipart/form-data" method="POST" action="">
  <p> (上傳的檔案名稱請符合英數字及減號或底線,檔案類型必須是jpg、png、gif,檔案容量必須小於1M) </p>
  <input type="file" name="upload_file[]" multiple>
  <input type="submit" value="確定上傳">
</form>

判斷接收到上傳檔案 => $_FILES接收上傳檔案信息

<?php
//1.判斷接收到上傳檔案 => 通過 $_FILES 檔案上傳變數接收上傳檔案信息 ======================
if (isset($_FILES['upload_file'])) {
  $files = $_FILES['upload_file'];
  print_r($files); //這是一個二維陣列, 第一層是檔案的5個資料, 第二層分別紀錄著多個檔案
  echo '<hr><br><br><br>';
}
?>

建立新陣列, 將收到檔案的陣列轉換後存放在新陣列

$new_array = array();  //建立新陣列, 將收到檔案的陣列轉換後存放在新陣列
 
//依收到檔案的陣列依第一層繞迴圈, 因為是5個資訊所以會繞5圈
foreach( $files as $file ){
  $i = 0;  //新陣列的索引編號
  print_r($file);
  echo '<hr>';
 
  //依收到的檔案數繞迴圈, 也就是有3個檔案就繞3圈
  foreach( $file as $key => $val ){
    $new_array[$i]['name']     = $files['name'][$key];
    $new_array[$i]['type']     = $files['type'][$key];
    $new_array[$i]['tmp_name'] = $files['tmp_name'][$key];
    $new_array[$i]['error']    = $files['error'][$key];
    $new_array[$i]['size']     = $files['size'][$key];
    $i++;
  } //foreach 第2層 end
} //foreach 第1層 end
print_r( $new_array );
echo '<hr><br><br><br>';

檢查上傳檔案的限制條件, 完成上傳檔案, 最後顯示上傳結果的訊息

//檔案限制條件
$max_size  = 1024*1024;                     //設定允許上傳檔案容量的最大值(1M)
$allow_ext = array('jpeg', 'jpg', 'png');   //設定允許上傳檔案的類型
$path      = './img_upload/';
if (!file_exists($path)) { mkdir($path); }
include('../shared/fn_upload_chk.php');
include('../shared/fn_thumbnail.php');
$msg_result = '';  //負責接收所有檔案檢測後的回傳訊息
 
//依新陣列的檔案資訊逐項進行限制檢查
foreach( $new_array as $key => $file ){
  $file_name = $file['name'];
  $msg = upload_chk( $file, $max_size, $allow_ext, $path, $file_name );
  if($msg==1){ $msg = '檔案傳送成功!'; }
  $msg_result .= '第' . ($key+1) . '個上傳檔案的結果:' . $msg . '<br/>';
 
  $src_name = $path.$file['name'];
  if( file_exists($src_name) ){
    $extname  = pathinfo($src_name, PATHINFO_EXTENSION);  //副檔名部份
    $basename = basename($src_name, '.'.$extname);        //主檔名部份
    $dst_name = $basename.'_s.'.$extname;                  //準備小圖檔名
    $dst_w = 200;
    $dst_h = 200;
    thumbnail( $src_name, $path, $dst_name, $dst_w, $dst_h, $del_source=false );
  }
}
 
echo $msg_result;

 

 

go TOP