$_FILES['file']本身就是一個陣列,其底下包含了
$_FILES["file"]["name"]:上傳檔案的原始名稱。
$_FILES["file"]["type"]:上傳的檔案類型。
$_FILES["file"]["size"]:上傳的檔案原始大小。
$_FILES["file"]["tmp_name"]:上傳檔案後的暫存資料夾位置。
$_FILES["file"]["error"]:如果檔案上傳有錯誤,可以顯示錯誤代碼。
共有五個key值組成的,如果是單一檔案上傳用foreach可以解出陣列中的五個參數值,也就是上傳檔案的基本參數。
如果是多檔上傳,那$_FILES['file']就會是陣列格式,用一層foreach是解不出來的,因為第一層只會解出$_FILES['file']的五個屬性值但仍為陣列型態,還要再用第二層foreach去解每個屬性的參數值,不過有個更簡單的方法用一層foreach就能解出來了,方法如下:
//html
<input type='file' class=' form-control' multiple name='file[]' id='file' >
//php
//建立檔案
if(!empty($_FILES['file']['name'][0])){
foreach($_FILES['file']['name'] as $key=> $val){ //以$_FILES['file']['name']來開啟迴圈,如果上傳三個檔案就會迴圈三次
$_FILES["file"]["name"][$key]://可以得到上傳檔案的原始名稱迴圈值。
$_FILES["file"]["type"][$key]://可以得到上傳的檔案類型迴圈值。
$_FILES["file"]["size"][$key]://可以得到上傳的檔案原始大小迴圈值。
$_FILES["file"]["tmp_name"][$key]://可以得到上傳檔案後的暫存資料夾位置迴圈值。
$_FILES["file"]["error"][$key]://可以得到顯示錯誤代碼迴圈值。
//存入資料庫
$valuesvar="(centerid,titlefile,filename,filetype,filesize) values('".$centerid."','".strriposfunction($val=$val,$type="1")."','".$_FILES["file"]["name"][$key]."','".$_FILES["file"]["type"][$key]."','".$_FILES["file"]["size"][$key]."')";
insert($dbname="dbname",$values=$valuesvar);
}
}
如果要上傳檔案,用單檔迴圈產生還是陣列產生,使用class.upload.php來處理都是可以的,有需要的朋友參考看看!
工作心得撰寫:徐嘉裕 Neil hsu
留言
張貼留言