開新檔案 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>
<?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;