加入收藏 | 设为首页 | 会员中心 | 我要投稿 鄂州站长网 (https://www.0711zz.com.cn/)- 云通信、区块链、物联平台、操作系统、高性能计算!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

php文件上传程序

发布时间:2022-07-18 10:07:08 所属栏目:PHP教程 来源:互联网
导读:文章提供一款完整理的php文件上传程序实例代码,他可以上传图片并且把图片保存到1:按天存入目录 2:按月存入目录 ,还可以设置上传图片生成水印. !doctype html public -//w3c//dtd xhtml 1.0 transitional//en http://www.w3.org/tr/xhtml1/dtd/xhtml1-transi
  文章提供一款完整理的php文件上传程序实例代码,他可以上传图片并且把图片保存到1:按天存入目录 2:按月存入目录 ,还可以设置上传图片生成水印.
 
  <!doctype html public "-//w3c//dtd xhtml 1.0 transitional//en" "http://www.w3.org/tr/xhtml1/dtd/xhtml1-transitional.dtd">
  <html xmlns="http://www.w3.org/1999/xhtml">
  <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{
  ?>
  <form action="upfile.php" method="post" enctype="multipart/form-data" name="myform" onsubmit="return check()">
  <input type="file" name="upfile" value="" class="text"><input type="submit" name="up" value="上传" class="button">
  <input type="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(@emptyempty($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(emptyempty($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;
          } 

(编辑:鄂州站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读