php 上传 类 代码,php 图片上传类代码

先来个简单的:

//https://www.jb51.net

class upLoad{

public $length; //限定文件大小

public $file; //判断此类是用于图片上传还是文件上传

public $fileName; //文件名

public $fileTemp; //上传临时文件

public $fileSize; //上传文件大小

public $error; //上传文件是否有错,php4没有

public $fileType; //上传文件类型

public $directory; //

public $maxLen;

public $errormsg;

function __construct($length,$file=true,$directory)

{

$this->maxLen=$length;

$this->length=$length*1024;

$this->file=$file; //true为一般文件,false为图片的判断

$this->directory=$directory;

}

public function upLoadFile($fileField)

{

$this->fileName=$fileField['name'];

$this->fileTemp=$fileField['tmp_name'];

$this->error=$fileField['error'];

$this->fileType=$fileField['type'];

$this->fileSize=$fileField['size'];

$pathSign = DIRECTORY_SEPARATOR; // /

if($this->file) //一般文件上传

{

$path = $this->_isCreatedDir($this->directory);//取得路径

if($path)//https://www.jb51.net

{

$createFileType = $this->_getFileType($this->fileName);//设置文件类别

$createFileName=uniqid(rand()); //随机产生文件名

$thisDir=$this->directory.$pathSign.$createFileName.".".$createFileType;

if(@move_uploaded_file($this->fileTemp,$thisDir)) //把临时文件移动到规定的路径下

{

return $thisDir;

}

}

}else{ //图片上传

$path = $this->_isCreatedDir($this->directory);//取得路径

if($path)//路径存在//https://www.jb51.net

{

$createFileType = $this->_getFileType($this->fileName);//设置文件类别

$createFileName=uniqid(rand());

return @move_uploaded_file($this->fileTemp,$this->directory.$pathSign.$createFileName.".".$createFileType) ? true : false;

}

}

}

public function _isBig($length,$fsize) //返回文件是否超过规定大小

{

return $fsize>$length ? true : false;

}

public function _getFileType($fileName) //获得文件的后缀

{

return end(explode(".",$fileName));

}

public function _isImg($fileType) //上传图片类型是否允许

{

$type=array("jpeg","gif","jpg","bmp");

$fileType=strtolower($fileType);

$fileArray=explode("/",$fileType);

$file_type=end($fileArray);

return in_array($file_type,$type);//https://www.jb51.net

}

public function _isCreatedDir($path) //路径是否存在,不存在就创建

{

if(!file_exists($path))

{

return @mkdir($path,0755)?true:false; //权限755//

}

else

{

return true;

}

}

public function showError() //显示错误信息

{//https://www.jb51.net

echo " \n";

exit();

}

}

class multiUpLoad extends upLoad{

public $FILES;

function __construct($arrayFiles,$length,$file=true,$directory)

{

$this->FILES=$arrayFiles;

parent::__construct($length,$file,$directory);

}

function upLoadMultiFile()

{

$arr=array();

if($this->_judge()||$this->_judge()=="no") //文件全部符合规格,就开始上传

{

foreach($this->FILES as $key=>$value)

{

$strDir=parent::upLoadFile($this->FILES[$key]);

array_push($arr, $strDir);

}

//https://www.jb51.net

return $arr;

}else

{

return false;

}

}

function _judge()

{

if($this->file)

{

foreach($this->FILES as $key=>$value)

{

if($this->_isBig($this->length,$value['size']))

{

$this->errormsg="文件超过 $this->maxLen K";

parent::showError();

}

if($value['error']=UPLOAD_ERR_NO_FILE)

{

//$this->errormsg="上传文件出现错误";

//parent::showError();

return "no";

}

}

return true;

}else

{

//https://www.jb51.net

foreach($this->FILES as $key=>$value)

{

if($this->_isBig($this->length,$value['size']))

{

$this->errormsg="图片超过$this->maxLen";

parent::showError();

}

if($value['error']!=0)

{

$this->errormsg="上传图片出现错误";

parent::showError();

}

if(!$this->_isImg($value['type']))

{

$this->errormsg="图片格式不对";

parent::showError();

}

}

return true;

}

}

}

?>

再来个复杂点的,可以自动生成缩略图的功能的php上传类

开始第一步:

创建文件夹,布局:

annex:附件(该目录下存放上传的原图片)

|— smallimg:存放缩略图片

|— mark:存放水印图片

include:存放类文件,字体(本程序代码使用的是:04B_08__.TTF)

|— upfile.php:集成简单上传,生成缩略图及水印的类文件信息

|— 04B_08__.TTF:字体文件

test.php:测试文件

第二步上传类

upfile.php

class UPImages {

var $annexFolder = "annex";//附件存放点,默认为:annex

var $smallFolder = "smallimg";//缩略图存放路径,注:必须是放在 $annexFolder下的子目录,默认为:smallimg

var $markFolder = "mark";//水印图片存放处

var $upFileType = "jpg gif png";//上传的类型,默认为:jpg gif png rar zip

var $upFileMax = 1024;//上传大小限制,单位是“KB”,默认为:1024KB

var $fontType;//字体

var $maxWidth = 500; //图片最大宽度

var $maxHeight = 600; //图片最大高度

function UPImages($annexFolder,$smallFolder,$includeFolder) {

$this->annexFolder = $annexFolder;

$this->smallFolder = $smallFolder;

$this->fontType = $includeFolder."/04B_08__.TTF";

}

function upLoad($inputName) {

$imageName = time();//设定当前时间为图片名称

if(@empty($_FILES[$inputName]["name"])) die(error("没有上传图片信息,请确认"));

$name = explode(".",$_FILES[$inputName]["name"]);//将上传前的文件以“.”分开取得文件类型

$imgCount = count($name);//获得截取的数量

$imgType = $name[$imgCount-1];//取得文件的类型

if(strpos($this->upFileType,$imgType) === false) die(error("上传文件类型仅支持 ".$this->upFileType." 不支持 ".$imgType));

$photo = $imageName.".".$imgType;//写入数据库的文件名

$uploadFile = $this->annexFolder."/".$photo;//上传后的文件名称

$upFileok = move_uploaded_file($_FILES[$inputName]["tmp_name"],$uploadFile);

if($upFileok) {

$imgSize = $_FILES[$inputName]["size"];

$kSize = round($imgSize/1024);

if($kSize > ($this->upFileMax*1024)) {

@unlink($uploadFile);

die(error("上传文件超过 ".$this->upFileMax."KB"));

}

} else {

die(error("上传图片失败,请确认你的上传文件不超过 $upFileMax KB 或上传时间超时"));

}

return $photo;

}

function getInfo($photo) {

$photo = $this->annexFolder."/".$photo;

$imageInfo = getimagesize($photo);

$imgInfo["width"] = $imageInfo[0];

$imgInfo["height"] = $imageInfo[1];

$imgInfo["type"] = $imageInfo[2];

$imgInfo["name"] = basename($photo);

return $imgInfo;

}

function smallImg($photo,$width=128,$height=128) {

$imgInfo = $this->getInfo($photo);

$photo = $this->annexFolder."/".$photo;//获得图片源

$newName = substr($imgInfo["name"],0,strrpos($imgInfo["name"], "."))."_thumb.jpg";//新图片名称

if($imgInfo["type"] == 1) {

$img = imagecreatefromgif($photo);

} elseif($imgInfo["type"] == 2) {

$img = imagecreatefromjpeg($photo);

} elseif($imgInfo["type"] == 3) {

$img = imagecreatefrompng($photo);

} else {

$img = "";

}

if(empty($img)) return False;

$width = ($width > $imgInfo["width"]) ? $imgInfo["width"] : $width;

$height = ($height > $imgInfo["height"]) ? $imgInfo["height"] : $height;

$srcW = $imgInfo["width"];

$srcH = $imgInfo["height"];

if ($srcW * $width > $srcH * $height) {

$height = round($srcH * $width / $srcW);

} else {

$width = round($srcW * $height / $srcH);

}

if (function_exists("imagecreatetruecolor")) {

$newImg = imagecreatetruecolor($width, $height);

ImageCopyResampled($newImg, $img, 0, 0, 0, 0, $width, $height, $imgInfo["width"], $imgInfo["height"]);

} else {

$newImg = imagecreate($width, $height);

ImageCopyResized($newImg, $img, 0, 0, 0, 0, $width, $height, $imgInfo["width"], $imgInfo["height"]);

}

if ($this->toFile) {

if (file_exists($this->annexFolder."/".$this->smallFolder."/".$newName)) @unlink($this->annexFolder."/".$this->smallFolder."/".$newName);

ImageJPEG($newImg,$this->annexFolder."/".$this->smallFolder."/".$newName);

return $this->annexFolder."/".$this->smallFolder."/".$newName;

} else {

ImageJPEG($newImg);

}

ImageDestroy($newImg);

ImageDestroy($img);

return $newName;

}

function waterMark($photo,$text) {

$imgInfo = $this->getInfo($photo);

$photo = $this->annexFolder."/".$photo;

$newName = substr($imgInfo["name"], 0, strrpos($imgInfo["name"], ".")) . "_mark.jpg";

switch ($imgInfo["type"]) {

case 1:

$img = imagecreatefromgif($photo);

break;

case 2:

$img = imagecreatefromjpeg($photo);

break;

case 3:

$img = imagecreatefrompng($photo);

break;

default:

return False;

}

if (empty($img)) return False;

$width = ($this->maxWidth > $imgInfo["width"]) ? $imgInfo["width"] : $this->maxWidth;

$height = ($this->maxHeight > $imgInfo["height"]) ? $imgInfo["height"] : $this->maxHeight;

$srcW = $imgInfo["width"];

$srcH = $imgInfo["height"];

if ($srcW * $width > $srcH * $height) {

$height = round($srcH * $width / $srcW);

} else {

$width = round($srcW * $height / $srcH);

}

if (function_exists("imagecreatetruecolor")) {

$newImg = imagecreatetruecolor($width, $height);

ImageCopyResampled($newImg, $img, 0, 0, 0, 0, $width, $height, $imgInfo["width"], $imgInfo["height"]);

} else {

$newImg = imagecreate($width, $height);

ImageCopyResized($newImg, $img, 0, 0, 0, 0, $width, $height, $imgInfo["width"], $imgInfo["height"]);

}

$white = imageColorAllocate($newImg, 255, 255, 255);

$black = imageColorAllocate($newImg, 0, 0, 0);

$alpha = imageColorAllocateAlpha($newImg, 230, 230, 230, 40);

ImageFilledRectangle($newImg, 0, $height-26, $width, $height, $alpha);

ImageFilledRectangle($newImg, 13, $height-20, 15, $height-7, $black);

ImageTTFText($newImg, 4.9, 0, 20, $height-14, $black, $this->fontType, $text[0]);

ImageTTFText($newImg, 4.9, 0, 20, $height-6, $black, $this->fontType, $text[1]);

if($this->toFile) {

if (file_exists($this->annexFolder."/".$this->markFolder."/".$newName)) @unlink($this->annexFolder."/".$this->markFolder."/".$newName);

ImageJPEG($newImg,$this->annexFolder."/".$this->markFolder."/".$newName);

return $this->annexFolder."/".$this->markFolder."/".$newName;

} else {

ImageJPEG($newImg);

}

ImageDestroy($newImg);

ImageDestroy($img);

return $newName;

}

}

?>

第三步:测试上传类

test.php

$annexFolder = "annex";

$smallFolder = "smallimg";

$markFolder = "mark";

$includeFolder = "include";

require("./".$includeFolder."/upfile.php");

$img = new UPImages($annexFolder,$smallFolder,$includeFolder);

$text = array("www.jb51.net","all rights reserved");

if(@$_GET["go"]) {

$photo = $img->upLoad("upfile");

$img->maxWidth = $img->maxHeight = 350;//设置生成水印图像值

$img->toFile = true;

$newSmallImg = $img->smallImg($photo);

$newMark = $img->waterMark($photo,$text);

echo "%22.%24newSmallImg.%22
";

echo "%22.%24newMark.%22
";

echo "继续上传";

} else {

?>

}

?>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值