PHP實現(xiàn)上傳多文件示例代碼
上傳多文件
1.在對多文件信息進行操作前,需要構建文件信息,通過buildInfo函數(shù)將三維數(shù)組轉換成便于文件操作的二維數(shù)組。
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;
}
單文件和多文件的判斷在于文件數(shù)組的類型,單文件(二維數(shù)組)、多文件(三維數(shù)組)。
2.文件上傳函數(shù)及參數(shù)
function uploadFiles($path = "uploads", $allowExt = array("jpg", "gif", "png", "wbmp"), $maxSize = 1048576, $imgFlag = true)
path,保存目錄。allowExt,允許擴展名數(shù)組。maxSize最大上傳文件大小。imgFlag,圖片文件標識符。
3.判斷保存文件的目錄是否存在
if(!file_exists($path)){
mkdir($path, 0777, true);
}
4.傳入構建好的文件信息,保存到files
$i = 0; $files = buildInfo();
5.判斷文件的error類型
foreach ($files as $file){
if($file['error'] == UPLOAD_ERR_OK){
}else{
switch ($file['error']){
case 1:
$mes = "超過配置文件上傳文件大小";
break;
case 2:
$mes = "超過了表單設置";
break;
case 3:
$mes = "文件部分被上傳";
break;
case 4:
$mes = "沒有文件上傳";
break;
case 6:
$mes = "沒找到臨時目錄";
break;
case 7:
$mes = "文件不可寫";
break;
case 8:
$mes = "由于PHP的擴展程序中斷了文件上傳";
break;
}
6.限制文件類型
if($file['error'] == UPLOAD_ERR_OK){
$ext = getExt($file['name']);
if(!in_array($ext, $allowExt)){
exit("非法文件類型");
}
7.限制是否為真的圖片類型
if($imgFlag){
if(!getimagesize($file['tmp_name'])){
exit("不是真的圖片類型");
}
}
8.判斷文件大小
if($file['size'] > $maxSize){
exit("文件過大");
}
9.判斷文件是否通過post上傳
if(!is_uploaded_file($file[‘tmp_name'])){
exit(“文件不是通過HTTP POST上傳”);
}
10.重命名文件(唯一且不重復)并保存到目標目錄
$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++;
}
重寫文件信息數(shù)組中的name,刪除變量file[‘error']和file[‘tmp_name']。最后將成功上傳的文件保存到uploadedFiles數(shù)組中。
以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
相關文章
thinkphp框架表單數(shù)組實現(xiàn)圖片批量上傳功能示例
這篇文章主要介紹了thinkphp框架表單數(shù)組實現(xiàn)圖片批量上傳功能,結合實例形式分析了js前端圖片上傳與后臺thinkPHP文件處理相關操作技巧,需要的朋友可以參考下2020-04-04
Yii框架引用插件和ckeditor中body與P標簽去除的方法
這篇文章主要介紹了Yii框架引用插件和ckeditor中body與P標簽去除的方法,結合實例形式分析了Yii框架中引入插件的步驟、實現(xiàn)方法與相關注意事項,需要的朋友可以參考下2017-01-01
CI框架源碼解讀之利用Hook.php文件完成功能擴展的方法
這篇文章主要介紹了CI框架源碼解讀之利用Hook.php文件完成功能擴展的方法,分析了Hook的原理與擴展CI框架的相關技巧,需要的朋友可以參考下2016-05-05
YII Framework框架教程之使用YIIC快速創(chuàng)建YII應用詳解
這篇文章主要介紹了YII Framework框架教程之使用YIIC快速創(chuàng)建YII應用的方法,詳細分析說明了YII Framework框架使用YIIC命令行創(chuàng)建應用的相關技巧與注意事項,需要的朋友可以參考下2016-03-03

