PHP批量上传附件(支持上传多个文件)-数据提交页面: input class=upfile type=file name=myFile[] mu...

海南网站建设,网页设计
记忆工作中的点滴
首页>> Php技术 >>PHP批量上传附件(支持上传多个文件)

数据提交页面:

<input class="upfile" type="file" name="myFile[]" multiple="multiple" style="border:none"/>

PHP上传文件:

<?php
function getFiles(){
	$i=0;
	foreach($_FILES as $file){
		if(is_string($file['name'])){
			//单文件判定
			$files[$i]=$file;
			$i++;
		} elseif(is_array($file['name'])){
			foreach($file['name'] as $key=>$val){
				$files[$i]['name']=$file['name'][$key];
				$files[$i]['type']=$file['type'][$key];
				$files[$i]['tmp_name']=$file['tmp_name'][$key];
				$files[$i]['error']=$file['error'][$key];
				$files[$i]['size']=$file['size'][$key];
				$i++;
			}
		}
	}
	return $files;
}

function getExt($filename){
	return strtolower(pathinfo($filename,PATHINFO_EXTENSION));
}

//产生唯一字符串
function getUniName(){
	return md5(uniqid(microtime(true),true));
}

function uploadFile($fileInfo,$path='../temp',$flag=true,$maxSize=10485760,$allowExt=array('jpeg','jpg','png','gif','rar','zip')){
	//$flag = true;
	//$allowExt = array('jpeg','jpg','gif','png');
	//$maxSize = 1048576;//1M
	//判断错误号
	$res=array();
	if($fileInfo['error']===UPLOAD_ERR_OK){
		//检测上传得到小
		if($fileInfo['size']>$maxSize){
			$res['mes']=$fileInfo['name'].'上传文件过大';
		}
		$ext=getExt($fileInfo['name']);
		//检测上传文件的文件类型
		if(!in_array($ext,$allowExt)){
			$res['mes']=$fileInfo['name'].'非法文件类型';
		}
		//检测是否是真实的图片类型
		if($flag){
			if(!getimagesize($fileInfo['tmp_name'])){
				$res['mes']=$fileInfo['name'].'不是系统允许的上传类型';
			}
		}
		//检测文件是否是通过HTTP POST上传上来的
		if(!is_uploaded_file($fileInfo['tmp_name'])){
			$res['mes']=$fileInfo['name'].'文件不是通过HTTP POST方式上传上来的';
		}
		if($res) return $res;
		//$path='../temp';
		if(!file_exists($path)){
			mkdir($path,0777,true);
			chmod($path,0777);
		}
		$uniName=getUniName();
		$destination=$path.'/'.$uniName.'.'.$ext;
		if(!move_uploaded_file($fileInfo['tmp_name'],$destination)){
			$res['mes']=$fileInfo['name'].'文件移动失败';
		}
		//$res['mes']=$fileInfo['name'].'上传成功';
		$res['dest']=$destination;
		return $res;
	} else{
		//匹配错误信息
		switch ($fileInfo ['error']) {
			case 1 :
				$res['mes'] = '上传文件超过了PHP配置文件中upload_max_filesize选项的值';
			break;
			case 2 :
				$res['mes'] = '超过了表单MAX_FILE_SIZE限制的大小';
			break;
			case 3 :
				$res['mes'] = '文件部分被上传';
			break;
			case 4 :
				$res['mes'] = '';//没有选择上传文件
			break;
			case 6 :
				$res['mes'] = '没有找到临时目录';
			break;
			case 7 :
			case 8 :
				$res['mes'] = '系统错误';
			break;
		}
		return $res;
	}
}
?>

获取数据:

$files = getFiles();
foreach($files as $fileInfo){
	$res = uploadFile($fileInfo);
	echo $res['mes'],'<br/>';
	$uploadFiles[] = @$res['dest'];
}
$uploadFiles=array_values(array_filter($uploadFiles));
//统计文件数
$file_total = count($uploadFiles);
//分隔存储
$arr_fields_id = implode(",", $uploadFiles);

×

感谢您的支持,我们会一直保持!

扫码支持
请土豪扫码随意打赏

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

打赏作者
版权所有,转载注意明处:不懂戀愛魚兒 » PHP批量上传附件(支持上传多个文件)
标签: php 多文件上传

发表评论

路人甲 表情
看不清楚?点图切换 Ctrl+Enter快速提交

网友评论(0)