php简单的上传类分享
来源: 阅读:1189 次 日期:2016-08-22 15:18:22
温馨提示: 小编为您整理了“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程序设计有所帮助。

更多信息请查看 网络编程
手机网站地址: php简单的上传类分享
由于各方面情况的不断调整与变化, 提供的所有考试信息和咨询回复仅供参考,敬请考生以权威部门公布的正式信息和咨询为准!

2026上岸·考公考编培训报班

  • 报班类型
  • 姓名
  • 手机号
  • 验证码
关于我们| 联系我们| 人才招聘| 网站声明| 网站帮助| 非正式的简要咨询| 简要咨询须知| 新媒体/短视频平台| 手机站点| 投诉建议
工业和信息化部备案号:滇ICP备2023014141号-1 云南省教育厅备案号:云教ICP备0901021 滇公网安备53010202001879号 人力资源服务许可证:(云)人服证字(2023)第0102001523号
云南网警备案专用图标
联系电话:0871-65099533/13759567129 获取招聘考试信息及咨询关注公众号:
咨询QQ:1093837350(9:00—18:00) 版权所有:
云南网警报警专用图标
Baidu
map