首页 > php上传下载 > php文件上传程序

php文件上传程序

文章提供一款完整理的php文件上传程序实例代码,他可以上传图片并且把图片保存到1:按天存入目录 2:按月存入目录 ,还可以设置上传图片生成水印.

<!doctype html> 
<html> 
<head> 
<meta http-equiv="content-type" content="text/html; charset=gb2312" /> 
<title>上传文件程序</title> 
<style type="text/css"> 
*{ 
 font-size:12px; 
 margin:0; padding:0; 
} 
a:link,a:visited{ 
 text-decoration:none; 
 color: #393 
} 
a:hover{ 
 text-decoration:underline; 
 color:#0033cc 
} 
input.text{ 
 border:1px solid #ccc;height:22px;line-height:22px;padding-left:5px;background:#fff;width:274px; 
} 
input.button{ 
 background:#fff url(images/button.png);border:1px solid #9ea9c5;padding:2px 2px 0px 2px;margin-left:4px; margin-right:4px; 
} 
</style> 
<script language=javascript> 
function check()  
{ 
 var strfilename=document.myform.upfile.value; 
 if (strfilename=="") 
 { 
 alert("请选择要上传的文件"); 
  document.myform.upfile.focus(); 
 return false; 
   } 
} 
</script> 
</head> 
<body> 
<?php
/***********************
程序:上传文件 
功能:上传文件、缩略图、加水印 
****************************/
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 "<img src='".$newsmallimg."' border='0'>"; //输出缩略图
        //echo "<img src='".$newmark."' border='0'>"; //输出水印图
        
    } else {
        $upfilename = $oupload->upload("upfile"); //上传的文件域
        
    }
    $strjs = "<script language=javascript>n";
    $strjs.= "parent.document.myform.upfile1.value='" . $newsmallimg . "'n";
    $strjs.= "parent.document.myform.upfile2.value='" . $photourl . "'n";
    $strjs.= "</script>n";
    echo $strjs; //把上次文件路径附在upfile1、upfile2中去
    
} else { < formaction = "upfile.php"method = "post"enctype = "multipart/form-data"name = "myform"onsubmit = "return check()" > < inputtype = "file"name = "upfile"value = ""class = "text" > < inputtype = "submit"name = "up"value = "上传"class = "button" > < inputtype = "hidden"name = "urlid"value = "<?php echo $_get['urlid']" > < / form > < ? php
} < / body > < / html > < ?
//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->upsize = $_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("没有上传文件信息,请确认 <a href='javascript:history.go(-1);'>返回</a>");
    //$name = explode(".",$this->upname);//将上传前的文件以"."分开取得文件类型
    //$filcount = count($name);//获得截取的数量
    //$filtype = $name[$filcount-1];//取得文件的类型
    $filtype = $fileextname;
    if (strpos($this->upfiletype, $filtype) === false) {
        die("上传文件类型仅支持 " . $this->upfiletype . " 不支持 " . $filtype . " <a href='javascript:history.go(-1);'>返回</a>");
    }
    $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 "文件上传成功 <a href='javascript:history.go(-1);'>继续上传</a>";
    } 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;
}
}


教程网址:http://www.phprm.com/scxz/fs960.html

欢迎收藏∩_∩但请保留本文链接。

标签:文件上传 php 程序

相关文章

发表留言