帝国CMS模板大全
www.admin99.cn
www.92cms.cn 帝国CMS模板下载站!,情怀,养站,二次开发!源码需求比较大的一站式会员下载,价更省!!!

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 ; 
        } 
}?> 

 

赞(0)
版权声明:本文采用知识共享 署名4.0国际许可协议 [BY-NC-SA] 进行授权
文章名称:《php文件上传程序 - php上传下载》
文章链接:https://www.admin99.cn/6972
本站资源仅供个人学习交流,请于下载后24小时内删除,不允许用于商业用途,否则法律问题自行承担。
QQ站长交流群:953950264

登录

找回密码

注册