php中处理上传文件的函数是,PHP 文件上传处理函数

/**

* 文件上传处理函数

* @param array $upfile, 表示上传文件信息,如$_FILES['pic'];

* @param string $path, 表示储存上传文件目录路径;

* @param array $typelist 表示允许上传的文件类型;默认为array()表示不限制

如图片类型限制: $typelist=array("image/jpeg","image/gif","image/png");

* @param int $maxsize, 表示允许上传文件的大小,默认为0, 表示不限制

* @return 若成功返回上传成功的文件名,失败则返回布尔值false.

*/

function doUpload($upfile,$path,$typelist=array(),$maxsize=0){

//判断path是否有效

if(!file_exists($path) || !is_dir($path)){

return false; //

}

//1.判断文件上传是否成功

if($upfile['error']>0){

/*

switch($upfile['error']){

case 1: $info="上传的文件超过了 php.ini 中"; break;

case 2: $info="上传文件的大小超过了 HTML 表单中 MAX_FILE_SIZE "; break;

case 3: $info="文件只有部分被上传"; break;

case 4: $info="没有文件被上传"; break;

case 6: $info="找不到临时文件夹"; break;

case 7: $info="文件写入失败"; break;

default: $info="未知错误!";

}*/

return false;

}

//2. 过滤文件的类型

if(!empty($typelist) && count($typelist)>0){

//判断当前上传文件类型是否不在数组typelist中

if(!in_array($upfile['type'],$typelist)){

//exit("上传文件类型错误!".$upfile['type']);

return false;

}

}

//4. 上传文件大小的过滤(对当前上传文件大小的验证)

if($maxsize>0){

if($upfile[size]>$maxsize){

return false;//exit("文件大小超出!");

}

}

//5. 对上传文件的文件名的处理

$ext = pathinfo($upfile['name'],PATHINFO_EXTENSION); //获取上传文件的后缀名

//随机一个文件名

do{

$newfile = date("YmdHis").rand(1000,9999).".".$ext;

}while(file_exists($path."/".$newfile)); //若文件存在,则重新随机

//6. 执行文件上传移动处理

if(is_uploaded_file($upfile['tmp_name'])){

if(move_uploaded_file($upfile['tmp_name'],$path."/".$newfile)){

return $newfile; //上传文件成功

}else{

return false;//echo "上传文件失败!";

}

}else{

return false;//echo "不是有效的上传文件!";

}

}

//图片等比缩放函数

function updateImage($picname,$path,$prix="s_",$maxwidth=100,$maxheight=100){

//1. 定义变量和计算图片信息

//$picname = "38.jpg"; //图片名称

//$path = "./image";//图片存放路径

//$prix = "d_"; //缩放后的前缀名

//$maxwidth=130; //最大的宽

//$maxheight=130; //最大的高

$info = getimagesize($path."/".$picname); //获取图片文件的属性信息

$width = $info[0]; //原图片的宽度

$height = $info[1]; //原图片的高度

//计算压缩后的尺寸

if(($maxwidth/$width)

$w=$maxwidth;//新图片的宽度

$h=($maxwidth/$width)*$height;//新图片的高度

}else{

$h=$maxheight;//新图片的宽度

$w=($maxheight/$height)*$width;//新图片的高度

}

//2. 创建图像源

$newim =imagecreateTrueColor($w,$h); //新图片源

//根据原图片类型来创建图片源

switch($info[2]){

case 1: //gif格式

$srcim = imageCreateFromgif($path."/".$picname);

break;

case 2: //jpeg格式

$srcim = imageCreateFromjpeg($path."/".$picname);

break;

case 3: //png格式

$srcim = imageCreateFrompng($path."/".$picname);

break;

default:

exit("无效的图片格式!");

break;

}

//3. 执行缩放处理

imagecopyresized($newim,$srcim,0,0,0,0,$w,$h,$width,$height);

//4. 输出保存绘画

header("Content-Type:".$info['mime']); //设置响应类型为图片格式

//根据原图片类型来保存新图片

switch($info[2]){

case 1: //gif格式

imagegif($newim,$path."/".$prix.$picname); //保存

//imagegif($newim);//输出

break;

case 2: //jpeg格式

imagejpeg($newim,$path."/".$prix.$picname);

//imagejpeg($newim);

break;

case 3: //png格式

imagepng($newim,$path."/".$prix.$picname);

//imagepng($newim);

break;

}

//4. 销毁资源

imageDestroy($newim);

imageDestroy($srcim);

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值