加入收藏 | 设为首页 | 会员中心 | 我要投稿 银川站长网 (https://www.0951zz.com/)- 云通信、基础存储、云上网络、机器学习、视觉智能!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

php支撑生成缩略图文件上传代码

发布时间:2023-05-29 12:36:37 所属栏目:PHP教程 来源:
导读:php支撑生成缩略图文件上传代码:<!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"> <he

php支撑生成缩略图文件上传代码:

<!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> 

</head> 

<body> 

<?php 

class upfileclass { 

 var $upfile, $upfile_name, $upfile_size; 

 # $upfile 临时文件名 $_files['tmp_name'] ,$upfile_name 文件名 $_files['name'] ,$upfile_size 文件大小$_files['size']; 

 var $new_upfile_name;   # 上传后的文件名称 ;  

 var $fleth, $fileextent; # 文件扩展名(类型) ;  

 var $f1, $f2, $f3;   # 文件保存路径(多级) upfiles/2008-01/08/; 

 var $filename;    # 文件(带路径) ; 

 var $filepath; #相对路径用来删除文件; 

 var $maxsize, $file_type; # 允许上传文件的大小 允许上传文件的类型 ; 

 var $buildfile,$newfile,$file_width,$file_height,$rate; 

 function upfileclass($upfile,$upfile_name,$upfile_size){ 

   $this->upfile = $upfile; 

   $this->upfile_name = $upfile_name; 

   $this->upfile_size = $upfile_size; 

   $this->new_upfile_name = $this->createnewfilename($this->upfile_name); 

   $this->f1 = "upfiles"; 

   $this->f2 = $this->f1."/".date('y')."-".date('m'); 

   $this->f3 = $this->f2."/".date('d'); 

   $this->filename = $this->f3 . "/" . $this->new_upfile_name; 

   $this->maxsize = 500*1024;    # 文件大小 500kb 

   $this->file_type = "gif/jpg/jpeg/png/bmp"; # 允许上传的文件类型 

 } 

 # 创建新文件名 (原文件名) 

 function createnewfilename($file_name){ 

    $this->fleth = explode(".",$file_name); 

    $this->fileextent = $this->fleth[(int)count($this->fleth)-1]; # 获取文件后缀; 

    $tmps教程tr = date('ymd').rand(0,time()) . "." .$this->fileextent;    # 创建新文件名; 

    return $tmpstr; 

 } 

 # 检测文件类型是否正确 

 function chk_fileextent(){ 

    $iwtrue = 0; 

    $fle = explode("/",$this->file_type); 

    for($i=0; $i < count($fle); $i++){ 

     if($this->fileextent == $fle[$i]){ 

     $iwtrue = (int) $iwtrue + 1; 

     } 

    } 

    if( $iwtrue == 0 ){ 

  $this->msg("文件不符合 ".$this->file_type." 格式!"); 

    } 

 } 

 # 提示错误信息并终止操作 

 function msg($error){ 

    echo "<script language="网页特效"> "; 

    echo " alert('".$error."'); "; 

    echo " window.history.back(); "; 

    echo "</script> "; 

    die(); 

 } 

 # 保存文件 

 function savefile(){ 

    $this->chk_fileextent(); 

    $this->chk_filesize(); 

    $this->createfolder( "../".$this->f1 ); 

    $this->createfolder( "../".$this->f2 ); 

    $this->createfolder( "../".$this->f3 ); 

    return $this->chk_savefile(); 

 } 

 # 检测上传结果是否成功 

 function chk_savefile(){ 

    $copymsg = copy($this->upfile,"../".$this->filename); 

    if( $copymsg ){ 

   return $this->filename; 

    } 

    else{ 

   $this->msg("文件上传失败! 请重新上传! "); 

    } 

 } 

 # 创建文件夹 

 function createfolder($foldername){ 

    if( !is_dir($foldername) ){ 

   mkdir($foldername,0777); 

    } 

 } 

 # 检测文件大小 

 function chk_filesize(){ 

    if( $this->upfile_size > $this->maxsize ){ 

  $this->msg("目标文件不能大于". $this->maxsize/1024 ." kb"); 

    } 

 } 

 # 删除文件($filepath 文件相对路径) 

 function deletefile($filepath){ 

    if( !is_file($filepath) ){ 

   return false; 

    } 

    else{ 

   $ending = @unlink($filepath); 

   return $ending; 

    } 

 } 

 /* 

    函数:生成缩略图 

  makebuild("/www.Cuoxin.com/a.jpg","news/b.jpg","100"); 

    参数: 

    echo $buildfile;   原图 带路径 

    echo $newfile;    生成的缩略图 带路径 

    echo $file_width;   缩略图宽度值 

    echo $file_height;   缩略图高度值 (默认为宽度的比例值) 

    echo $rate;     缩略图象品质; 

 */ 

 function makebuild($buildfile,$newfile,$file_width,$file_height=0,$rate=100) {  

    if(!is_file($buildfile)){ 

   $this->msg("文件 ".$buildfile." 不是一个有效的图形文件! 系统无法生成该文件的缩略图!"); 

   return false; 

    } 

    $data = getimagesize($buildfile);  

    switch($data[2]){  

  case 1:  

   $im = @imagecreatefromgif($buildfile);  

   break; 

  case 2:  

   $im = @imagecreatefromjpeg($buildfile);  

   break; 

  case 3:  

   $im = @imagecreatefrompng($buildfile);  

   break; 

    }  

    if(!$im){ 

   return false; 

    } 

    else{ 

   $srcw = imagesx($im);  # 取得原图宽度; 

   $srch = imagesy($im); # 取得原图高度; 

   $dstx = 0;  

   $dsty = 0;  

  if($file_height==0){ 

   $file_height = $file_width/$srcw*$srch; 

  } 

  if ($srcw*$file_height>$srch*$file_width){  

   $ffile_height = round($srch*$file_width/$srcw);  

   $dsty = floor(($file_height-$ffile_height)/2);  

   $ffile_width = $file_width;  

  }  

  else {  

   $ffile_width = round($srcw*$file_height/$srch);  

   $dstx = floor(($file_width-$ffile_width)/2);  

   $ffile_height = $file_height;  

  }  

  $ni = imagecreatetruecolor($file_width,$file_height);  

  $dstx = ($dstx<0)?0:$dstx;  

  $dsty = ($dstx<0)?0:$dsty;  

  $dstx = ($dstx>($file_width/2))?floor($file_width/2):$dstx;  

  $dsty = ($dsty>($file_height/2))?floor($file_height/s):$dsty;  

  imagecopyresized($ni,$im,$dstx,$dsty,0,0,$ffile_width,$ffile_height,$srcw,$srch);      

  imagejpeg($ni,$newfile,$rate); # 生成缩略图; 

  imagedestroy($im);     # imagedestroy(resource) 释放image关联的内存 

    } 

 } 

?> 

//开源代码Cuoxin.com 

</body> 

</html> 

(编辑:银川站长网)

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