<?php
//文件:文件上传类
//用途:文件上传
//作者:穆红伟
//时间:2009.08.24
class mupload
{
public $upfile;
public $result; //存储返回结果的数组
public $dir; //文件目录
public $thumb; //是否生成缩略图 1 为生成 0为不生成
public $thumb_w; //缩略图宽度
public $thumb_h; //缩略图高度
public $ftype=array('.jpg','.jpeg','.gif','.png','.rar'); //允许上传类型
public $maxsize=512000; //最大上传限制500k
public $name; //重新生成的文件名
public $fixname; //文件类型function __construct($args) //构造函数,进行一些合法性检查
{
$this->upfile=$_FILES[$args];
(!isset($_FILES) || !is_uploaded_file($_FILES[$args]['tmp_name'])) && $this->halt($_FILES[$args]['name'].'非法上传');
!in_array(strtolower(strrchr($_FILES[$args]['name'],'.')),$this->ftype) && $this->halt('只允许上传'.implode(',',$this->ftype).'等类型文件');
$_FILE[$args]['size']>$this->maxsize && $this->halt('上传最大允许'.round($this->maxsize/1024/1024,2).'M');
$this->thumb=0;
$this->thumb_w=0;
$this->thumb_h=0;
$this->fixname=strtolower(strrchr($_FILES[$args]['name'],'.'));
$this->name=date('YmdHis').'_'.mt_rand(100,999).strtolower(strrchr($_FILES[$args]['name'],'.'));
} function setWH($flag=1,$w=168,$h=68) //设置是否生成缩略图,宽度,高度
{
$this->thumb=$flag;
$this->thumb_w=$w;
$this->thumb_h=$h;
}function setDIR($dir) //目录创建
{
$dir=preg_replace('/[^0-9a-zA-Z_]+/','',$dir);
$root=$_SERVER['DOCUMENT_ROOT'];
$dir=$root.'/'.$dir;
!is_writeable($root) && halt('目录'.$root.'不可写!');
@mkdir($dir,0777);
$this->dir=$dir;
}function upload() //上传
{
if(!move_uploaded_file($this->upfile['tmp_name'],$this->dir.'/'.$this->name))
{
copy($this->upfile['tmp_name'],$this->dir.'/'.$this->name);
$this->result['name']=strrchr($this->dir,'/').'/'.$this->name;
}
if($this->thumb)
{
if(function_exists(imagecreate)) //支持GD库,生成缩略图
{
switch($this->fixname)
{
case '.gif':
$im=imagecreatefromgif($this->dir.'/'.$this->name);
break;
case '.png':
$im=imagecreatefrompng($this->dir.'/'.$this->name);
break;
case '.jpg':
$im=imagecreatefromjpeg($this->dir.'/'.$this->name);
break;
case '.jpeg':
$im=imagecreatefromjpeg($this->dir.'/'.$this->name);
break;
}
//imagecreatetruecolor()函数不能用于.GIF文件
$newim=$this->fixname=='.gif'?imagecreate($this->thumb_w,$this->thumb_h):imagecreatetruecolor($this->thumb_w,$this->thumb_h);
imagecopyresampled($newim,$im,0,0,0,0,$this->thumb_w,$this->thumb_h,imagesx($im),imagesy($im));
switch($this->fixname)
{
case '.gif':
imagegif($newim,$this->dir.'/thumb_'.$this->name);
break;
case '.png':
imagepng($newim,$this->dir.'/thumb_'.$this->name);
break;
case '.jpeg':
imagejpeg($newim,$this->dir.'/thumb_'.$this->name);
break;
case '.jpg':
imagejpeg($newim,$this->dir.'/thumb_'.$this->name);
break;
}
imagedestroy($im);
imagedestroy($newim);
}
else //不支持GD库,直接copy
{
@copy($this->dir.'/'.$this->name,$this->dir.'/thumb_'.$this->name);
}
$this->result['thumb']=strrchr($this->dir,'/').'/thumb_'.$this->name;
}
return $this->result;
}function halt($msg) //错误输出函数
{
exit('<script language="javascript" type="text/javascript">{alert("'.$msg.'");history.back()}</script>');
}
}
/*用法: $upload=new mupload('filename');
$upload->setWH(1,$w,$h);
$upload->setDIR('mmimage');
$content=$upload->upload();
$url=$content['thumb'];
$this->db->insert($this->table,$value);*/
?>
//文件:文件上传类
//用途:文件上传
//作者:穆红伟
//时间:2009.08.24
class mupload
{
public $upfile;
public $result; //存储返回结果的数组
public $dir; //文件目录
public $thumb; //是否生成缩略图 1 为生成 0为不生成
public $thumb_w; //缩略图宽度
public $thumb_h; //缩略图高度
public $ftype=array('.jpg','.jpeg','.gif','.png','.rar'); //允许上传类型
public $maxsize=512000; //最大上传限制500k
public $name; //重新生成的文件名
public $fixname; //文件类型function __construct($args) //构造函数,进行一些合法性检查
{
$this->upfile=$_FILES[$args];
(!isset($_FILES) || !is_uploaded_file($_FILES[$args]['tmp_name'])) && $this->halt($_FILES[$args]['name'].'非法上传');
!in_array(strtolower(strrchr($_FILES[$args]['name'],'.')),$this->ftype) && $this->halt('只允许上传'.implode(',',$this->ftype).'等类型文件');
$_FILE[$args]['size']>$this->maxsize && $this->halt('上传最大允许'.round($this->maxsize/1024/1024,2).'M');
$this->thumb=0;
$this->thumb_w=0;
$this->thumb_h=0;
$this->fixname=strtolower(strrchr($_FILES[$args]['name'],'.'));
$this->name=date('YmdHis').'_'.mt_rand(100,999).strtolower(strrchr($_FILES[$args]['name'],'.'));
} function setWH($flag=1,$w=168,$h=68) //设置是否生成缩略图,宽度,高度
{
$this->thumb=$flag;
$this->thumb_w=$w;
$this->thumb_h=$h;
}function setDIR($dir) //目录创建
{
$dir=preg_replace('/[^0-9a-zA-Z_]+/','',$dir);
$root=$_SERVER['DOCUMENT_ROOT'];
$dir=$root.'/'.$dir;
!is_writeable($root) && halt('目录'.$root.'不可写!');
@mkdir($dir,0777);
$this->dir=$dir;
}function upload() //上传
{
if(!move_uploaded_file($this->upfile['tmp_name'],$this->dir.'/'.$this->name))
{
copy($this->upfile['tmp_name'],$this->dir.'/'.$this->name);
$this->result['name']=strrchr($this->dir,'/').'/'.$this->name;
}
if($this->thumb)
{
if(function_exists(imagecreate)) //支持GD库,生成缩略图
{
switch($this->fixname)
{
case '.gif':
$im=imagecreatefromgif($this->dir.'/'.$this->name);
break;
case '.png':
$im=imagecreatefrompng($this->dir.'/'.$this->name);
break;
case '.jpg':
$im=imagecreatefromjpeg($this->dir.'/'.$this->name);
break;
case '.jpeg':
$im=imagecreatefromjpeg($this->dir.'/'.$this->name);
break;
}
//imagecreatetruecolor()函数不能用于.GIF文件
$newim=$this->fixname=='.gif'?imagecreate($this->thumb_w,$this->thumb_h):imagecreatetruecolor($this->thumb_w,$this->thumb_h);
imagecopyresampled($newim,$im,0,0,0,0,$this->thumb_w,$this->thumb_h,imagesx($im),imagesy($im));
switch($this->fixname)
{
case '.gif':
imagegif($newim,$this->dir.'/thumb_'.$this->name);
break;
case '.png':
imagepng($newim,$this->dir.'/thumb_'.$this->name);
break;
case '.jpeg':
imagejpeg($newim,$this->dir.'/thumb_'.$this->name);
break;
case '.jpg':
imagejpeg($newim,$this->dir.'/thumb_'.$this->name);
break;
}
imagedestroy($im);
imagedestroy($newim);
}
else //不支持GD库,直接copy
{
@copy($this->dir.'/'.$this->name,$this->dir.'/thumb_'.$this->name);
}
$this->result['thumb']=strrchr($this->dir,'/').'/thumb_'.$this->name;
}
return $this->result;
}function halt($msg) //错误输出函数
{
exit('<script language="javascript" type="text/javascript">{alert("'.$msg.'");history.back()}</script>');
}
}
/*用法: $upload=new mupload('filename');
$upload->setWH(1,$w,$h);
$upload->setDIR('mmimage');
$content=$upload->upload();
$url=$content['thumb'];
$this->db->insert($this->table,$value);*/
?>
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货