【www.gdgbn.com--php常用代码】
代码如下
<script language=网页特效>
function check()
{
var strfilename=document.myform.upfile.value;
if (strfilename=="")
{
alert("请选择要上传的文件");
document.myform.upfile.focus();
return false;
}
}
</script>
/***********************
程序:上传文件
功能:上传文件、缩略图、加水印
****************************/
include("common/upfiles.class.php");
$path="../upload/coolsite"; //文件上传路径
$mix="smallimg"; //缩略图路径(在upload下建立)
$mark="markimg"; //加水引的图片存放路径(在upload下建立)
$text = array("www.111cn.net"); //水印内容
$oupload= new upfiles($path,$mix,$mark); //实例化类文件
if(isset($_post["up"])){
if($_post["urlid"]=="1"){ //上传图片 参数urlid 1:上传图片 2:上传其他文件..
$oupload->tofile = true; //开启则只保存缩略图或者水印图,删除原图
$photo = $oupload->upload("upfile"); //上传的文件域
$photourl = $oupload->fileurl."/".$photo;
$newsmallimg = $oupload->smallimg($photo); //缩略图功能
//$newmarkimg = $oupload->watermark($photo,$text); //水印功能
//echo $newsmallimg; //输出缩略图路径
//echo $newmark; //输出水印图路径
//echo ""; //输出缩略图
//echo ""; //输出水印图
}else{
$upfilename = $oupload->upload("upfile"); //上传的文件域
}
$strjs = "<script language=javascript> ";
$strjs .= "parent.document.myform.upfile1.value="".$newsmallimg."" ";
$strjs .= "parent.document.myform.upfile2.value="".$photourl."" ";
$strjs .= "</script> ";
echo $strjs; //把上次文件路径附在upfile1、upfile2中去
}else{
?>
//upfiles.class.php
/*=========================
上传类 upfiles.class.php
===========================*/
class upfiles {
/*=========================
//基本参数设置
===========================*/
protected $annexfolder = "upload"; //附件存放点,默认为:upload
protected $dirtype = 2; //1:按天存入目录 2:按月存入目录
protected $smallfolder = "smallimg"; //缩略图存放路径,注:必须是放在 $upload下的子目录,默认为:smallimg
protected $markfolder = "markimg"; //水印图片存放路径,注:必须是放在 $upload下的子目录,默认为:markimg
protected $upfiletype = "jpg gif png rar zip"; //上传的类型,默认为:jpg gif png rar zip
protected $upfilemax = 102400; //上传大小限制,单位是"kb",默认为:1024kb
protected $fonttype = "common/equinoxstd.otf"; //水印字体库
protected $maxwidth = 800; //图片最大宽度
protected $maxheight = 600; //图片最大高度
/*=========================
//初始化上传类
===========================*/
public function __construct($annexfolder,$smallfolder,$includefolder) {
switch($this->dirtype)
{
case 1: $attach_subdir = "day_".date("ymd"); break;
case 2: $attach_subdir = "month_".date("ym"); break;
}
$attach_dir = $annexfolder."/".$attach_subdir;
$attach_dir_small = $attach_dir."/".$smallfolder;
$attach_dir_mark = $attach_dir."/".$includefolder;
$this->rootfolder = $annexfolder;
$this->annexfolder = $attach_dir;
$this->smallfolder = $attach_dir_small;
$this->markfolder = $attach_dir_mark;
//$this->fonttype = $includefolder."/nasaliza.ttf";
}
public function __get($fileurl){
$fileurl = $this->annexfolder;
return $fileurl;
}
/*=========================
//上传文件
===========================*/
public function upload($inputname) {
//检查文件夹是否存在
if(!file_exists($this->annexfolder)){
if(!file_exists($this->rootfolder)) @mkdir($this->rootfolder);
if(!file_exists($this->annexfolder)) @mkdir($this->annexfolder);
if(!file_exists($this->smallfolder)) @mkdir($this->smallfolder);
if(!file_exists($this->markfolder)) @mkdir($this->markfolder);
}
if(!file_exists($this->smallfolder)){
@mkdir($this->smallfolder);
}
if(!file_exists($this->markfolder)){
@mkdir($this->markfolder);
}
$this->uptype = $_files[$inputname]["type"];
$this->upname = $_files[$inputname]["name"];
$this->uptmp_name = $_files[$inputname]["tmp_name"];
$this->ups教程ize = $_files[$inputname]["size"];
$this->uperror = $_files[$inputname]["error"];
if($this->uptype){
switch ($this->uptype)///检查上传的类型
{
case "image/pjpeg":
$fileextname = "jpg";
break;
case "image/jpeg":
$fileextname = "jpg";
break;
case "image/gif":
$fileextname = "gif";
break;
case "image/x-png":
$fileextname = "png";
break;
case "application/x-shockwave-flash":
$fileextname = "swf";
break;
case "text/plain":
$fileextname = "txt";
break;
case "application/msword":
$fileextname = "doc";
break;
case "application/vnd.ms-excel":
$fileextname = "xls";
break;
case "application/x-zip-compressed":
$fileextname = "zip";
break;
case "audio/mpeg":
$fileextname = "mp3";
break;
case "audio/x-ms-wma":
$fileextname = "wma";
break;
case "application/pdf":
$fileextname = "pdf";
break;
default: //如果不满足上述类型,那么上传文件被判断为格式不正确!!
//$fileextname =strtolower(substr(strrchr(trim($this->upname), "."),1,4));
//$fileinfo=pathinfo($this->upname);
//$fileextname=$fileinfo["extension"];
$fileextname = "err";
}
}
代码如下 if(@empty($this->upname)) die("没有上传文件信息,请确认 返回");
//$name = explode(".",$this->upname);//将上传前的文件以"."分开取得文件类型
//$filcount = count($name);//获得截取的数量
//$filtype = $name[$filcount-1];//取得文件的类型
$filtype = $fileextname;
if(strpos($this->upfiletype,$filtype) === false){
die("上传文件类型仅支持 ".$this->upfiletype." 不支持 ".$filtype ." 返回");
}
$filsize = $this->upsize;
if(round($filsize/1024) > ($this->upfilemax*1024)) {
die("上传文件超过 ".$this->upfilemax."kb");
}
$filename = "es_".date("ymdhis").".".$filtype;//写入数据库教程的文件名
$fileurl = $this->annexfolder."/".$filename;//上传后的文件名称
$upfileok = move_uploaded_file($this->uptmp_name,$fileurl);
if($this->uperror == 0 || $upfileok) {
echo "文件上传成功 继续上传";
} else {
die("上传文件失败,请确认你的上传文件不超过 $upfilemax kb 或上传时间超时");
}
return $filename;
//return $fileurl;
}
public 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;
}
/*=========================
//缩略图
===========================*/
public function smallimg($photo,$width=250,$height=192) {
$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->smallfolder."/".$newname)){
@unlink($this->smallfolder."/".$newname);
}
imagejpeg($newimg,$this->smallfolder."/".$newname);
return $this->smallfolder."/".$newname;
} else {
imagejpeg($newimg);
}
imagedestroy($newimg);
imagedestroy($img);
return $newname;
}
/*=========================
//加水印
===========================*/
public function watermark($photo,$text) {
$imginfo = $this->getinfo($photo);
$photo = $this->annexfolder."/".$photo;
$newname = substr($imginfo["name"], 0, strrpos($imginfo["name"], ".")) . "_mark.jpg";
//$newname = substr($imginfo["name"], 0, strrpos($imginfo["name"], ".")) . ".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, 80);
//imagefilledrectangle($newimg, 0, $height-26, $width, $height, $alpha);
//imagefilledrectangle($newimg, 13, $height-20, 15, $height-7, $black);
imagettftext($newimg, 14, 0, 20, $height-14, $white, $this->fonttype, $text[0]);
imagettftext($newimg, 14, 0, 20, $height-6, $white, $this->fonttype, $text[1]);
if($this->tofile) {
if (file_exists($this->markfolder."/".$newname)){
@unlink($this->markfolder."/".$newname);
}
imagejpeg($newimg,$this->markfolder."/".$newname);
if(file_exists($this->annexfolder."/".$newname)){
unlink($this->annexfolder."/".$newname);
}
return $this->markfolder."/".$newname;
} else {
imagejpeg($newimg);
}
imagedestroy($newimg);
imagedestroy($img);
return $newname;
}
}?>