+ -
当前位置:首页 → 问答吧 → 自己写的上传类,请大大们有空帮我看看,谢谢!

自己写的上传类,请大大们有空帮我看看,谢谢!

时间:2010-09-20

来源:互联网

自己写的一个简单上传类,感觉功能实现比较简单,对面向对象的理解还是比较吃力。
麻烦大大们有空帮我看看,帮我找找哪些可以改进的,谢谢!

  1. <?php
  2. /////////////////////////////////////////////////////////////////////////////
  3. // Framework
  4. //
  5. // Copyright (c) 2010 xiaoGao
  6. //
  7. /////////////////////////////////////////////////////////////////////////////

  8. /**
  9. * 定义 MyUpload 对象
  10. *
  11. * MyUpload 实现了一个简单的、可扩展的文件上传助手  
  12. *
  13. * @package File
  14. * @version $Id:001 2010-09-07 21:07:53 xiaoGao $
  15. * @charset utf-8
  16. */


  17. /**
  18. *
  19. * 使用方法:
  20. *
  21. * <code>
  22. * //导入上传类
  23. * include('upload.php');
  24. * //实例化一个对象
  25. * $Upload = new MyUpload();
  26. *
  27. * //上传配置,可改可不改
  28. * //配置允许的后缀
  29. * $Upload->_allExt = array('gif','png','jpg');
  30. * //配置文件上传的路径
  31. * $Upload->_filePath = 'D:/php/htdocs/my/';
  32. *
  33. * //简单上传,file就是input框的name,$name获得新文件的名字,不带路径的
  34. * $name = $Upload->Upload('file');
  35. * </code>
  36. *

  37. */
  38. class MyUpload
  39. {
  40.         /**
  41.          * 所要上传的文件名,即input框的name
  42.          *
  43.          * @public string
  44.          */
  45.         public $_file;
  46.        
  47.         /**
  48.          * 所要上传的文件名
  49.          *
  50.          * @public string
  51.          */
  52.         public $_fileName;
  53.        
  54.         /**
  55.          * 所要上传的文件大小
  56.          *
  57.          * @public int
  58.          */
  59.         public $_fileSize;
  60.        
  61.         /**
  62.          * 所要上传的临时文件名
  63.          *
  64.          * @public string
  65.          */
  66.         public $_fileTmp;
  67.        
  68.         /**
  69.          * 上传后文件的命名
  70.          *
  71.          * @public string 不路径的
  72.          *
  73.          */
  74.         public $_newName;
  75.        
  76.         /**
  77.          * 允许上传的扩展名
  78.          *
  79.          * @public array
  80.          */
  81.         public $_allExt = array('gif', 'png', 'jpg', 'flv', 'swf');
  82.        
  83.         /**
  84.          * 允许上传的文件大小
  85.          *
  86.          * @public int 默认为2M
  87.          */
  88.         public $_allSize = 2097152;
  89.        
  90.         /**
  91.          * 文件上传的路径
  92.          *
  93.          * @public string 默认为当前页的upload文件夹
  94.          */
  95.         public $_filePath = 'D:/php/htdocs/my/upload/';
  96.        
  97.         /**
  98.          * 上传函数
  99.          *
  100.          * @param input_file_name
  101.          *
  102.          * @return FileUpload
  103.          */
  104.         public function Upload($inputName)
  105.         {
  106.                 $this->_file = $inputName;
  107.                 $this->_fileName = $this->getName();
  108.                 $this->_fileTmp = $this->getTmp();
  109.                 $this->_fileSize = $this->getSize();
  110.                 $this->_newName = $this->makeName();
  111.                 //检查上传路径
  112.                 if(!$this->checkPath())
  113.                 {
  114.                         //没有该路径,尝试创建
  115.                         if($this->makeDir())
  116.                         {
  117.                                 echo "<script>alert('Don't Path;Create success!);</script>";
  118.                         } else {
  119.                                 echo "<script>alert('Don't Path;Create false!');</script>";
  120.                                 exit(0);
  121.                         }
  122.                 }
  123.                
  124.                 //检查文件后缀
  125.                 if(!$this->checkExt())
  126.                 {
  127.                         echo "<script>alert('Error!The file`s Ext is not allow!');</script>";
  128.                         exit(0);
  129.                 }
  130.                
  131.                 //检查文件大小
  132.                 if(!$this->checkSize())
  133.                 {
  134.                         echo "<script>alert('Error!The file is to big!');</script>";
  135.                         exit(0);
  136.                 }
  137.                
  138.                 //移动文件
  139.                 if($this->move())
  140.                 {
  141.                         echo "<script>alert('File Upload Ok!');</script>";
  142.                         return $this->_newName;
  143.                 } else {
  144.                         echo "<script>alert('Error!File move false!');</script>";
  145.                         exit(0);
  146.                 }
  147.         }
  148.        
  149.         /**
  150.          * 检查上传路径是否存在
  151.          *
  152.          * @param filePath
  153.          *
  154.          * @return bool
  155.          */
  156.         public function checkPath()
  157.         {
  158.                 if(is_dir($this->_filePath))
  159.                 {
  160.                         return true;
  161.                 } else {
  162.                         return false;
  163.                 }
  164.         }
  165.        
  166.         /**
  167.          * 尝试创建该目录
  168.          *
  169.          * @param filePath
  170.          *
  171.          * @return string filePath
  172.          */
  173.         public function makeDir()
  174.         {
  175.                 if(mkdir($this->_filePath))
  176.                 {
  177.                         return true;
  178.                 } else {
  179.                         return false;
  180.                 }
  181.         }
  182.        
  183.         /**
  184.          * 返回该文件的名称
  185.          *
  186.          * @param fileName
  187.          *
  188.          * @return string fileName
  189.          */
  190.         public function getName()
  191.         {
  192.                 return $_FILES[$this->_file]['name'];
  193.         }
  194.        
  195.         /**
  196.          * 返回该文件的临时名称
  197.          *
  198.          * @param fileName
  199.          *
  200.          * @return string fileName
  201.          */
  202.         public function getTmp()
  203.         {
  204.                 return $_FILES[$this->_file]['tmp_name'];
  205.         }
  206.        
  207.         /**
  208.          * 获得该文件的大小
  209.          *
  210.          * @param fileName
  211.          *
  212.          * @return int fileSize
  213.          */
  214.         public function getSize()
  215.         {
  216.                 return $_FILES[$this->_file]['size'];
  217.         }
  218.        
  219.         /**
  220.          * 生成唯一的文件名
  221.          *
  222.          * @param fileName
  223.          *
  224.          * @return string fileName
  225.          */
  226.         public function makeName()
  227.         {
  228.                 $id = md5(time().$this->getName().rand(0,10));
  229.                 $Name = $id.'.'.$this->getExt($this->getName());
  230.                 return $Name;
  231.         }
  232.        
  233.         /**
  234.          * 返回该文件不带.的小写后缀
  235.          *
  236.          * @param fileName
  237.          *
  238.          * @return string file_ext
  239.          */
  240.         public function getExt($fileName)
  241.         {
  242.                 //获得后缀,最后一个出现的‘.’
  243.                 $ext = trim(substr($fileName, strrpos($fileName, '.')), '.');
  244.                 //将后缀转化为小写字母
  245.                 $ext = strtolower($ext);
  246.                 return $ext;
  247.         }
  248.        
  249.         /**
  250.          * 检查该文件的后缀是否符合设定
  251.          *
  252.          * @param fileName
  253.          *
  254.          * @return bool
  255.          */
  256.         public function checkExt()
  257.         {
  258.                 $ext = $this->getExt($this->_fileName);
  259.                 if(in_array($ext, $this->_allExt))
  260.                 {
  261.                         return 1;
  262.                 } else {
  263.                         return 0;
  264.                 }
  265.         }
  266.        
  267.         /**
  268.          * 检查文件的大小
  269.          *
  270.          * @param fileName
  271.          *
  272.          * @return bool
  273.          */
  274.         public function checkSize()
  275.         {
  276.                 if($this->_fileSize <= $this->_allSize)
  277.                 {
  278.                         return 1;
  279.                 } else {
  280.                         return 0;
  281.                 }
  282.         }
  283.        
  284.         /**
  285.          * 移动文件
  286.          *
  287.          * @param fileName
  288.          *
  289.          * @return bool
  290.          */
  291.         public function move()
  292.         {
  293.                 if(move_uploaded_file($this->_fileTmp, $this->_filePath.$this->_newName))
  294.                 {
  295.                         return 1;
  296.                 } else {
  297.                         return 0;
  298.                 }
  299.         }
  300. }
  301. ?>
复制代码

作者: woshigaocailong   发布时间: 2010-09-20

没人帮忙提点意见么…………

作者: woshigaocailong   发布时间: 2010-09-20

相关阅读 更多

热门下载

更多