查看: 5904|回复: 0
打印 上一主题 下一主题

PHP上传文件通用类CUpload

[复制链接]
跳转到指定楼层
1#
发表于 2007-10-4 22:37:09 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
台州网址导航
  1. <?php
  2. /*************************************
  3. PHP 上传文件通用类
  4. 23:00 2006-11-20 完成
  5. 作者:月影 QQ:41096834 email:zhangxugg@163.com
  6. 没有版权,欢迎转发 但请保留此说明 谢谢
  7. **************************************
  8. 说明 凡是本人写的PHP类,都以MFC的类的命名方式为参照 即以大写C开头 第二个字母也大写 其它字母小写 如CUpload,CDb,CImage等
  9. void CUpload::CUpload($upload_dir="./",$str_file)
  10. 函数功能 构造一个上传类
  11. 参数 :$upload_dir    上传文件保存目录 默认为当前目录,应该以/结束
  12. $str_file 文件上传表单名 如"file1"
  13. void CUpload::set_permit_filter($filter="")
  14. 函数功能 设置允许的上传文件类型
  15. 参数 $filter 允许上传文件类型 用~间隔 如$filter="jpg~bmp~gif"  即只允许上传jpg,bmp,gif图片
  16. 如果不设置此项,则按本类的数据成员$filter来过滤类型
  17. CUpload::do_upload($dist)
  18. 函数功能 实现文件上传,并以预定的文件名保存。如果提交的文件类型中有不允许的文件类型,则停止处理并送出提示信息
  19. 参数 $dist 上传目标文件名,不包括路径 如 up.png
  20. 使用范例:
  21. //构造一个上传类对象,并定义将文件上传到 "/upload/"目录下,文件上传表单名为 file1 (但这时文件还没有开始上传)
  22. $upload=new CUpload("/upload/","file1);
  23. $upload->set_permit_filter("jpg~jpeg~gif~png"); //设置只能上传 jpg,jpeg,gif,png 类型文件
  24. $upload->do_upload("test.png");   //执行上传文件操作,并把文件保存为test.png
  25. 说明:这时
  26. */
  27. class CUpload  //上传文件类定义
  28. {
  29. var $file_name;  //文件名:如plmm.jpg
  30. var $ext_name;  //副档名:如jpg 注意,不包含 中间的点
  31. var $main_name;  //主档名 不包含副档名 如plmm
  32. var $tmp_name;  //上传时的临时文件名
  33. var $upload_dir; //上传路径
  34. var $file_size;  //文件大小
  35. var $time;  //上传文件时间
  36. var $exist;
  37. var $permit_filter="";  //允许上传的文件类型 若为空,则只禁止$filter中列出的类型
  38. //禁止上传的文件类型 如果要禁止文件类型,请加在这里,并以~连接
  39. var $filter="asp~aspx~asax~asa~jsp~cer~cdx~asa~htr~php~php3~exe~cgi";

  40. public function __construct($upload_dir="./",$str)
  41. {  
  42.   $this->upload_dir=$upload_dir;
  43.   
  44.   $s=$_FILES[$str]['name'];
  45.   if(empty($_FILES[$str])) { return false;} //没有提交数据时返回
  46.   
  47.   $this->file_name=$s;
  48.   $this->main_name=strtolower(substr($s,0,strrpos($s,".")));
  49.   $this->tmp_name=$_FILES[$str]['tmp_name'];
  50.   $this->file_size=$_FILES[$str]['size']/1024;
  51.   $this->time=date("YmdGis");
  52.   $this->ext_name=strtolower(substr($this->file_name,strrpos($this->file_name,".")+1)); //取扩展名
  53.    
  54.   if($this->file_size<=0) {return false;}
  55.   if(!$this->check_ext_name())
  56.    return false; //检查禁止的文件类型
  57.   //echo $this->file_size;
  58. }

  59. //如果设置了此项,则只有在此列表中的类型才允许上传. 比方, 你现在只允许上传图片 可以这样设置过滤
  60.   // $up=new CUpload;
  61.   // $up->set_permit_filter("jpg~jpeg~bmp~png_gif");
  62.   //
  63.   
  64. function set_permit_filter($filter="")
  65. {
  66.   $this->permit_filter=$filter;   
  67. }

  68.   
  69. public function do_upload($opt)    //目标文件名,不包括路径
  70. {            
  71.   if($this->file_size<=0) return false;
  72.   if(($this->permit_filter!="")&&(strstr($this->permit_filter,strtolower($this->ext_name))!=""))
  73.   {  
  74.    return false;  
  75.   }
  76.   
  77.   $this->main_name=strtolower(substr($this->file_name,0,strrpos($this->file_name,".")));
  78.   $this->file_name=$opt;
  79.   
  80.   if(file_exists($this->upload_dir.$this->file_name))
  81.   {
  82.    //echo "文件".$this->file_name."已经存在,跳过上传.";
  83.    return false;
  84.   }
  85.   return (move_uploaded_file($this->tmp_name,$this->upload_dir.$this->file_name)?true:false);
  86. }

  87. public function get_ext_name()
  88. {
  89.   return $this->ext_name;
  90. }
  91. private function get_file_size()
  92. {
  93.   return $this->file_size;
  94. }
  95. private function check_ext_name()  //检查禁止上传文件扩展名 不用由对象调用
  96. {   
  97.   $tmp_filter=explode("~",$this->filter);
  98.   for($i=0;$i<count($tmp_filter);$i++)
  99.    {
  100.     if(strtolower($this->ext_name)===strtolower($tmp_filter[$i]))
  101.     {
  102.      return false;
  103.     }
  104.    }
  105. return true;     
  106. }
  107. }
  108. ?>
复制代码
下载地址:CUpload.rar
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 转播转播 分享分享 分享淘帖
台州维博网络(www.tzweb.com)专门运用PHP+MYSQL/ASP.NET+MSSQL技术开发网站门户平台系统等。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

网站推广
关于我们
  • 台州朗动科技(Tzweb.com)拥有多年开发网站平台系统门户手机客户端等业务的成功经验。主要从事:政企网站,系统平台,微信公众号,各类小程序,手机APP客户端,浙里办微应用,浙政钉微应用、主机域名、虚拟空间、后期维护等服务,满足不同企业公司的需求,是台州地区领先的网络技术服务商!

Hi,扫描关注我

Copyright © 2005-2026 站长论坛 All rights reserved

Powered by 站长论坛 with TZWEB Update Techonolgy Support

快速回复 返回顶部 返回列表