php上传文件分类实例代码

  1. <?php
  2. /**
  3. * 文件上传类
  4. * @author lijiamin
  5. * @time 2017-02-17
  6. * @email 1195989301@qq.com
  7. */
  8. classUpload{
  9. private$allowExt=array('gif','jpg','jpeg','bmp','png','swf');//限制文件上传的后缀名
  10. private$maxSize= 1;//限制最大文件上传1M
  11. /**
  12. * 获取文件的信息
  13. * @param str $flag 上传文件的标识
  14. * @return arr 上传文件的信息数组
  15. */
  16. publicfunctiongetInfo($flag){
  17. return$_FILES[$flag];
  18. }
  19. /**
  20. * 获取文件的后缀
  21. * @param str $filename 文件名
  22. * @return str 文件扩展名
  23. */
  24. publicfunctiongetExt($filename){
  25. returnpathinfo($filename,PATHINFO_EXTENSION);
  26. }
  27. /**
  28. * 检测上传文件是否合法
  29. * @param str $filename 文件名
  30. * @return bool 文件扩展名是否合法
  31. */
  32. privatefunctioncheckExt($filename){
  33. $ext=$this->getExt($filename);
  34. returnin_array($ext,$this->allowExt);
  35. }
  36. /**
  37. * 检测文件大小是否超过限制
  38. * @param int size 文件大小
  39. * @return bool 文件大小是否超过限制
  40. */
  41. publicfunctioncheckSize($size){
  42. return$size<$this->maxSize * 1024 * 1024;<!--$this--->
  43. }
  44. /**
  45. * 随机的文件名
  46. * @param int $len 随机文件名的长度
  47. * @return str 随机字符串
  48. */
  49. publicfunctionrandName($len=6){
  50. returnsubstr(str_shuffle('abcdefghjkmnpqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ234565789'),0,$len);
  51. }
  52. /**
  53. * 创建文件上传到的路径
  54. * @return str 文件上传的路径
  55. */
  56. publicfunctioncreateDir(){
  57. //上传文件路径
  58. $dir='./upload/'.date('Y/m/d',time());
  59. //判断文件夹是否存在,不存在则新建
  60. if(is_dir($dir) ||mkdir($dir,0777,true)){
  61. return$dir;
  62. }
  63. }
  64. /**
  65. * 文件上传
  66. * @param str $flag 文件上传标识
  67. * @return array 返回上传文件名、保存路径
  68. */
  69. publicfunctionuploadFile($flag){
  70. if($_FILES[$flag]['name'] ===''||$_FILES[$flag]['error'] !== 0){
  71. echo"没有上传文件";
  72. return;
  73. }
  74. $info=$this->getInfo($flag);
  75. if(!$this->checkExt($info['name'])){
  76. echo"不支持的文件类型";
  77. return;
  78. }
  79. if(!$this->checkSize($info['size'])){
  80. echo"文件大小超过限制";
  81. return;
  82. }
  83. $filename=$this->randName().'.'.$this->getExt($info['name']);
  84. $dir=$this->createDir();
  85. if(!move_uploaded_file($info['tmp_name'],$dir.'/'.$filename)){
  86. echo"文件上传失败";
  87. }else{
  88. returnarray('filename'=>$filename,'dir'=>$dir);
  89. }
  90. }
  91. }
  92. ?>