当前位置: 首页 » PHP » PHP文件上传函数

PHP文件上传函数

<?php

/**
*
* @author LiZeQiao <674531003@qq.com>
* @version
*/

/**
* field  上传文件名
* size   上传限制大小
* ext    文件类型
* dir    移动到哪个目录下
*/

function upload($field,$size=10240000,$ext=array(),$dir=’./’){

//用于返回多种信息
$result=array(
‘msg’=>”,
‘filename’=>”
);

$info=$_FILES[$field];

//检查错误代码
switch($info['error']){
case ’0′:
break;
case ’1′:
$result['msg']=’上传的文件超过了 php.ini 中 upload_max_filesize 选项限制的值’;
break;
case ’2′:
$result['msg']=’上传文件的大小超过了 HTML 表单中 MAX_FILE_SIZE 选项指定的值’;
break;
case ’3′:
$result['msg']=’文件只有部分被上传’;
break;
case ’4′:
$result['msg']=’没有文件被上传’;
break;
case ’6′:
$result['msg']=’找不到临时文件夹’;
break;
case ’7′:
$result['msg']=’文件写入失败’;
break;
default:
$result['msg']=’未知错误’;
break;
}

//有错误信息时,返回错误信息
if(!empty($result['msg'])){
return $result;
}

//检查该文件是否通过post方式上传的
if(!is_uploaded_file($info['tmp_name'])){
$result['msg']=    ‘亲,这个文件是你上传的吗?’;
return $result;
}

//判断大小是否符合要求
if($info['size']>$size){
$result['msg']=’文件太大了’;
return $result;
}

//var_dump($info);exit;

//取上传之前文件的扩展名
$extname=ltrim(strrchr($info['name'],’.’),’.’);

//判断文件类型是否允许
if(!empty($ext)){//是否需要检查扩展名

//检查扩展名是否在允许的数组中
if(!in_array($extname,$ext)){
$result['msg']= ‘您选择的文件类型不允许上传’;
return $result;
}
}

//生成一个新文件名
$save_filename=uniqid() . ‘.’ . $extname;
//echo $save_filename;

//目录最后的斜线处理
$dir=rtrim($dir,’\\/’) . ‘/’;

//创建不存在的目录
if(!file_exists($dir)){
mkdir($dir);
}

//移动上传文件
$res=move_uploaded_file($info['tmp_name'],$dir . $save_filename);

//判断上传是否成功
if($res){
$result['filename']=$save_filename;
return $result;
}

}

请尊重我们的辛苦付出,未经允许,请不要转载 本站 的文章,鄙视各种无耻的采集行为!
Tagged on:

发表评论