本文实例为大家分享了php上传类,供大家参考,具体内容如下
<?php
class uploadfile{
var $inputname; //控件名
var $allowtype = array(
'image/gif','image/jpg','image/jpeg','image/png','image/x-png','image/pjpeg'
); //上传类型
var $allowsize = 2097152; //限制大小
var $savedir = upload; //保存目录
var $isrename = true; //是否重命名,默认为true
var $errid = 0; //错误代码,默认为0
var $errmsg = ""; //错误信息
var $savepath = ""; //保存路径
function __construct($inputname,$allowtype="",$allowsize="",$savedir="",$isrename=true){
if(empty($inputname)){
$this->chk_err(-1); //无传入控件名
}else{
$this->inputname = $inputname;
}
if(!empty($allowtype)) $this->allowtype = $allowtype;
if(!empty($allowsize)) $this->allowsize = $allowsize;
if(!empty($savedir)) $this->savedir = $savedir;
if(!empty($isrename)) $this->isrename = $isrename;
}
function is_uploaded(){
if(empty($_files[$this->inputname]['name'])){
$this->chk_err(4); //没有文件被上传
}else{
if(is_uploaded_file($_files[$this->inputname]['tmp_name'])){
return true;
}else{
$this->chk_err(-2); //文件上传不合法
}
}
}
function chk_type(){
if(!in_array($_files[$this->inputname]['type'],$this->allowtype)){
$this->chk_err(-3); //上传的文件类型不被允许
}else{
return true;
}
}
function chk_size(){
if($_files[$this->inputname]['size'] > $this->allowsize){
$this->chk_(-4); //上传的文件过大
}else{
return true;
}
}
function move_uploaded(){ //移动上传文件
if(!$this->is_uploaded()){
return false;
}
if(!$this->chk_size()){
return false;
}
if(!$this->chk_type()){
return false;
}
//重命名
if($this->isrename){
$arrtmp = pathinfo($_files[$this->inputname]['name']);
$extension = strtolower($arrtmp['extension']);
$file_newname = date("ymdhis").rand(1000,9999)."00.".$extension; //重命名新文件, 00表示为上传的为原图
}else{
$file_newname = $_files[$this->inputname]['name'];
}
if(!file_exists($this->savedir)){ //判断保存目录是否存在
mkdir($this->savedir,0777,true); //建立保存目录
}
//移动文件
$result = move_uploaded_file($_files[$this->inputname]['tmp_name'],$this->savedir."/".$file_newname);
if($result){
$path = $this->savepath = $this->savedir.$file_newname; //文件的成功保存路径
return $path;
}else{
$this->chk_err($_files[$this->inputname]['error']);
}
}
//判断出错信息
function chk_err($errid){
$this->errid = $errid;
switch($this->errid){
case -4:
$this->errmsg = "上传的文件过大";
break;
case -3:
$this->errmsg = "上传的文件类型不被允许";
break;
case -2:
$this->errmsg = "文件上传不合法";
break;
case -1:
$this->errmsg = "无控件名传入";
break;
case 1:
$this->errmsg = '上传的文件超出了php.ini中upload_max_filesize设定的最大值';
break;
case 2:
$this->errmsg = '上传文件的大小超过了html表单中max_file_size选项指定的值';
break;
case 3:
$this->errmsg = '文件只有部分被上传';
break;
case 4:
$this->errmsg = '没有文件被上传';
break;
default:
break;
}
return false;
}
function get_errmsg(){
echo $this->errmsg; //输出错误信息
}
/**
+----------------------------------------------------------
* 取得图像信息
*
+----------------------------------------------------------
* @static
* @access public
+----------------------------------------------------------
* @param string $image 图像文件名
+----------------------------------------------------------
* @return mixed
+----------------------------------------------------------
*/
function getimageinfo($img) {
$imageinfo = getimagesize($img);
if( $imageinfo!== false) {
$imagetype = strtolower(substr(image_type_to_extension($imageinfo[2]),1));
$imagesize = filesize($img);
$info = array(
"width" =>$imageinfo[0],
"height" =>$imageinfo[1],
"type" =>$imagetype,
"size" =>$imagesize,
"mime" =>$imageinfo['mime'],
);
return $info;
}else {
return false;
}
}
/**
+----------------------------------------------------------
* 生成缩略图
+----------------------------------------------------------
* @static
* @access public
+----------------------------------------------------------
* @param string $image 原图
* @param string $type 图像格式
* @param string $thumbname 缩略图文件名
* @param string $maxwidth 宽度
* @param string $maxheight 高度
* @param string $position 缩略图保存目录
* @param boolean $interlace 启用隔行扫描
* @param boolean $is_save 是否保留原图
+----------------------------------------------------------
* @return void
+----------------------------------------------------------
*/
function thumb($image,$is_save=true,$suofang=0,$type='',$maxwidth=500,$maxheight=500,$interlace=true){
// 获取原图信息
$info = $this->getimageinfo($image);
if($info !== false) {
$srcwidth = $info['width'];
$srcheight = $info['height'];
$type = empty($type)?$info['type']:$type;
$type = strtolower($type);
$interlace = $interlace? 1:0;
unset($info);
if ($suofang==1) {
$width = $srcwidth;
$height = $srcheight;
} else {
$scale = min($maxwidth/$srcwidth, $maxheight/$srcheight); // 计算缩放比例
if($scale>=1) {
// 超过原图大小不再缩略
$width = $srcwidth;
$height = $srcheight;
}else{
// 缩略图尺寸
$width = (int)($srcwidth*$scale); //147
$height = (int)($srcheight*$scale); //199
}
}
// 载入原图
$createfun = 'imagecreatefrom'.($type=='jpg'?'jpeg':$type);
$srcimg = $createfun($image);
//创建缩略图
if($type!='gif' && function_exists('imagecreatetruecolor'))
$thumbimg = imagecreatetruecolor($width, $height);
else
$thumbimg = imagecreate($width, $height);
// 复制图片
if(function_exists("imagecopyresampled"))
imagecopyresampled($thumbimg, $srcimg, 0, 0, 0, 0, $width, $height, $srcwidth,$srcheight);
else
imagecopyresized($thumbimg, $srcimg, 0, 0, 0, 0, $width, $height, $srcwidth,$srcheight);
if('gif'==$type || 'png'==$type) {
//imagealphablending($thumbimg, false);//取消默认的混色模式
//imagesavealpha($thumbimg,true);//设定保存完整的 alpha 通道信息
$background_color = imagecolorallocate($thumbimg, 0,255,0); // 指派一个绿色
imagecolortransparent($thumbimg,$background_color); // 设置为透明色,若注释掉该行则输出绿色的图
}
// 对jpeg图形设置隔行扫描
if('jpg'==$type || 'jpeg'==$type) imageinterlace($thumbimg,$interlace);
//$gray=imagecolorallocate($thumbimg,255,0,0);
//imagestring($thumbimg,2,5,5,"thinkphp",$gray);
// 生成图片
$imagefun = 'image'.($type=='jpg'?'jpeg':$type);
$length = strlen("00.".$type) * (-1);
$_type = substr($image,-4);
$length = ($type != $_type ? $length+1 : $length);
//裁剪
if ($suofang==1) {
$thumbname01 = substr_replace($image,"01.".$type,$length); //大头像
$thumbname02 = substr_replace($image,"02.".$type,$length); //小头像
$imagefun($thumbimg,$thumbname01,100);
$imagefun($thumbimg,$thumbname02,100);
$thumbimg01 = imagecreatetruecolor(190,195);
imagecopyresampled($thumbimg01,$thumbimg,0,0,$_post['x'],$_post['y'],190,195,$_post['w'],$_post['h']);
$thumbimg02 = imagecreatetruecolor(48,48);
imagecopyresampled($thumbimg02,$thumbimg,0,0,$_post['x'],$_post['y'],48,48,$_post['w'],$_post['h']);
$imagefun($thumbimg01,$thumbname01,100);
$imagefun($thumbimg02,$thumbname02,100);
// unlink($image);
imagedestroy($thumbimg01);
imagedestroy($thumbimg02);
imagedestroy($thumbimg);
imagedestroy($srcimg);
return array('big' => $thumbname01 , 'small' => $thumbname02); //返回包含大小头像路径的数组
}else{
if($is_save == false){ //缩略图覆盖原图,缩略图的路径还是原图路径
$imagefun($thumbimg,$image,100);
}else{
$thumbname03 = substr_replace($image,"03.".$type,$length); //缩略图与原图同时存在,
$imagefun($thumbimg,$thumbname03,100);
imagedestroy($thumbimg);
imagedestroy($srcimg);
return $thumbname03 ; //返回缩略图的路径,字符串
}
}
}
return false;
}
}
以上就是本文的全部内容,希望对大家学习php程序设计有所帮助。
【说明】:本文章由站长整理发布,文章内容不代表本站观点,如文中有侵权行为,请与本站客服联系(QQ:)!