多檔案批量上傳
阿新 • • 發佈:2019-01-25
在網站後臺開發中並經常需要和上傳打交道,而單一的上傳方式已經不適合,大量相似型別的檔案批量上傳,那如何做到呢?(1)當然第一步首先得封裝下檔案上傳的基本函式uploadFiles()方法(2)第二步,那就編輯簡單的上傳的表單吧?
(3)第三步編寫php doAction3.php 方法 執行函式?首先列印上傳後的$_FILES :
你們就會發現,這些都是不規則的上傳資訊,沒辦法通過uploadFiles()方法統一上傳,那如何調整成可重複利用有規律的陣列模式呢?下面展示目標結構:
上面的資料結構就可以通過uploadFiles()方法遍歷上傳了!!那如何做到的呢?
主體思想就是單檔案,多檔案分開處理;需要判斷當前處理的資訊是單檔案資訊,還是多檔案資訊,而判斷的依據就是 $my_file['name'] 是否為字串?如果是字串,就是單檔案,如果不是,那肯定就是陣列型別啦,所以就可分開處理啦!當然這裡面也會用到一個公共的下標 $num 時間就像牙膏,只要擠,總會有的!
(3)第三步編寫php doAction3.php 方法 執行函式?首先列印上傳後的$_FILES :
你們就會發現,這些都是不規則的上傳資訊,沒辦法通過uploadFiles()方法統一上傳,那如何調整成可重複利用有規律的陣列模式呢?下面展示目標結構:
上面的資料結構就可以通過uploadFiles()方法遍歷上傳了!!那如何做到的呢?
function crateNewFilesArray($files) { $arr_item = array(); $arr_All = array(); $num = 0; foreach ($files as $my_file) { //單檔案 ( 多檔案則對應陣列型別 ) if (is_string($my_file['name'])) { $arr_All[$num] = $my_file; $num++; } else { for ($j = 0; $j < count($my_file['name']); $j++) { $arr_item = []; foreach ($my_file as $key => $my_item) { $arr_item[$key] = $my_item[$j]; } $arr_All[$num++] = $arr_item; } } } return $arr_All; }
主體思想就是單檔案,多檔案分開處理;需要判斷當前處理的資訊是單檔案資訊,還是多檔案資訊,而判斷的依據就是 $my_file['name'] 是否為字串?如果是字串,就是單檔案,如果不是,那肯定就是陣列型別啦,所以就可分開處理啦!當然這裡面也會用到一個公共的下標 $num 時間就像牙膏,只要擠,總會有的!