《PHP應(yīng)用:PHP實(shí)現(xiàn)上傳多文件示例代碼》要點(diǎn):
本文介紹了PHP應(yīng)用:PHP實(shí)現(xiàn)上傳多文件示例代碼,希望對(duì)您有用。如果有疑問(wèn),可以聯(lián)系我們。
PHP應(yīng)用上傳多文件
PHP應(yīng)用1.在對(duì)多文件信息進(jìn)行操作前,需要構(gòu)建文件信息,通過(guò)buildInfo函數(shù)將三維數(shù)組轉(zhuǎn)換成便于文件操作的二維數(shù)組.
PHP應(yīng)用
function buildInfo(){
$i = 0;
foreach ($_FILES as $v){
//判斷是否是單文件
if(is_string($v['name'])){
$files[$i] = $v;
$i++;
}else{
//多文件
foreach ($v['name'] as $key => $value){
$files[$i]['name'] = $value;
$files[$i]['size'] = $v['size'][$key];
$files[$i]['tmp_name'] = $v['tmp_name'][$key];
$files[$i]['type'] = $v['type'][$key];
$files[$i]['error'] = $v['error'][$key];
$i++;
}
}
}
return $files;
}
PHP應(yīng)用單文件和多文件的判斷在于文件數(shù)組的類型,單文件(二維數(shù)組)、多文件(三維數(shù)組).
PHP應(yīng)用2.文件上傳函數(shù)及參數(shù)
PHP應(yīng)用path,保存目錄.allowExt,允許擴(kuò)展名數(shù)組.maxSize最大上傳文件大小.imgFlag,圖片文件標(biāo)識(shí)符.
PHP應(yīng)用3.判斷保存文件的目錄是否存在
PHP應(yīng)用
if(!file_exists($path)){
mkdir($path, 0777, true);
}
PHP應(yīng)用4.傳入構(gòu)建好的文件信息,保存到files
PHP應(yīng)用
$i = 0;
$files = buildInfo();
PHP應(yīng)用5.判斷文件的error類型
PHP應(yīng)用
foreach ($files as $file){
if($file['error'] == UPLOAD_ERR_OK){
}else{
switch ($file['error']){
case 1:
$mes = "超過(guò)配置文件上傳文件大小";
break;
case 2:
$mes = "超過(guò)了表單設(shè)置";
break;
case 3:
$mes = "文件部分被上傳";
break;
case 4:
$mes = "沒(méi)有文件上傳";
break;
case 6:
$mes = "沒(méi)找到臨時(shí)目錄";
break;
case 7:
$mes = "文件不可寫(xiě)";
break;
case 8:
$mes = "由于PHP的擴(kuò)展程序中斷了文件上傳";
break;
}
PHP應(yīng)用6.限制文件類型
PHP應(yīng)用
if($file['error'] == UPLOAD_ERR_OK){
$ext = getExt($file['name']);
if(!in_array($ext, $allowExt)){
exit("非法文件類型");
}
PHP應(yīng)用7.限制是否為真的圖片類型
PHP應(yīng)用
if($imgFlag){
if(!getimagesize($file['tmp_name'])){
exit("不是真的圖片類型");
}
}
PHP應(yīng)用8.判斷文件大小
PHP應(yīng)用
if($file['size'] > $maxSize){
exit("文件過(guò)大");
}
PHP應(yīng)用9.判斷文件是否通過(guò)post上傳
PHP應(yīng)用
if(!is_uploaded_file($file[‘tmp_name'])){
exit(“文件不是通過(guò)HTTP POST上傳”);
}
PHP應(yīng)用10.重命名文件(唯一且不重復(fù))并保存到目標(biāo)目錄
PHP應(yīng)用
$filename = getUniName().".".$ext;
$destination = $path."/".$filename;
if(move_uploaded_file($file['tmp_name'], $destination)){
$mes = "文件上傳成功";
$file['name'] = $filename;
unset($file['error'], $file['tmp_name']);
$uploadedFiles[$i] = $file;
$i++;
}
PHP應(yīng)用重寫(xiě)文件信息數(shù)組中的name,刪除變量file[‘error']和file[‘tmp_name'].最后將成功上傳的文件保存到uploadedFiles數(shù)組中.
PHP應(yīng)用以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持維易PHP.
轉(zhuǎn)載請(qǐng)注明本頁(yè)網(wǎng)址:
http://www.snjht.com/jiaocheng/1710.html