好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

php文件上传程序 - php上传下载

php文件上传程序

文章提供一款完整理的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 (@ empty 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 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 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 ;          }  }?> 

 

查看更多关于php文件上传程序 - php上传下载的详细内容...

  阅读:78次