当前位置:Gxlcms > PHP教程 > 五分钟PHP上传类实现_PHP教程

五分钟PHP上传类实现_PHP教程

时间:2021-07-01 10:21:17 帮助过:11人阅读

PHP有很多值得学习的地方,这里我们主要介绍PHP上传类的解决方案,希望大家通过本文有大的收获。用户可以直接在WEB页面中输入PHP命令代码,因而不需要任何特殊的开发环境。在WEB页面中,所有PHP代码都被放置在“”中。此外,用户还可以选择使用诸如 等的形式。PHP引擎会自动识别并处理页面中所有位于PHP定界符之间的代码。

PHP脚本语言的语法结构与C语言和Perl语言的语法风格非常相似。用户在使用变量前不需要对变量进行声明。使用PHP创建数组的过程也非常简单。PHP还具有基本的面向对象组件功能,可以极大的方便用户有效组织和封装自己编写的代码,下面我们就详细的介绍PHP上传类的问题。
 
PHP上传类实现代码:

  1. php
  2. /**
  3. *Fileuploadclass
  4. *@version1.0.0(ThuAug1801:32:39CST2005)
  5. *@authorsanshi
  6. */
  7. classupLoad
  8. {
  9. /**
  10. *
  11. *@authorsanshi
  12. *@version1.0.0ThuAug1801:00:18CST2005
  13. *@paramstring$info文件内容
  14. *@paramstring$fileName生成的文件名
  15. *@returnboolean建立成功返回true
  16. *@deprecated
  17. *建立html文件
  18. */
  19. functioncreateHtml($info,$fileName)
  20. {
  21. }
  22. /**
  23. *
  24. *@authorsanshi
  25. *@version1.0.0ThuAug1801:03:09CST2005
  26. *@returnvoid
  27. *@deprecated
  28. *构造函数
  29. */
  30. functiondownLoad()
  31. {}
  32. /**
  33. *
  34. *@authorsanshi
  35. *@version1.0.0ThuAug1801:03:55CST2005
  36. *@paramstring$fileField在表单中的字段名
  37. *@paramstring$length限制的长度
  38. *@returnboolean成功返回true
  39. *@deprecated
  40. *功能实现函数
  41. */
  42. functioninit($fileField,$length='')
  43. {
  44. $files=$_FILES[$fileField];
  45. //用户名需要改动,根据自己的实际情况做改动
  46. $userName='sanshi';
  47. $fileName=$files['name'];
  48. $fileType=$files['type'];
  49. $fileTemp=$files['tmp_name'];
  50. $fileSize=empty($length)?($files['size']+10):$length;
  51. $fileError=$files['error'];//这块也许php4中没有
  52. //改为
  53. //if($this->_isType($fileName)||$this->_isBig($length ))
  54. if(!$this->_isType($fileName)||$this->_isBig($length )||$fileError!=0)
  55. {
  56. //print_r($files);
  57. returnfalse;
  58. }else{
  59. $path=$this->_createDir($userName);//取得路径
  60. $createFileName=$userName."_".time();//设置当前文件名
  61. $createFileType=$this->getFileType($fileName);//设置文件类别
  62. return@move_uploaded_file($fileTemp,$path.$createFileName.'.'.$createFileType)?true:false;
  63. }
  64. }
  65. /**
  66. *
  67. *@authorsanshi
  68. *@version1.0.0ThuAug1801:07:43CST2005
  69. *@paramint$length上传限制的大小
  70. *@returnboolean超过返回true
  71. *@deprecated
  72. *判断是否超过预定大小
  73. */
  74. function_isBig($length)
  75. {
  76. $bigest='';
  77. return$big>$bigest?true:false;
  78. }
  79. /**
  80. *
  81. *@authorsanshi
  82. *@version1.0.0ThuAug1801:08:55CST2005
  83. *@paramstring$fileName文件名
  84. *@returnstring$fileType文件后缀
  85. *@deprecated
  86. *取得文件后缀(只取得文件的最后一个后缀名)
  87. */
  88. functiongetFileType($fileName)
  89. {
  90. returnend(explode('.',$fileName));
  91. }
  92. /**
  93. *
  94. *@authorsanshi
  95. *@version1.0.0ThuAug1801:10:41CST2005
  96. *@paramstring$fileName文件名
  97. *@paramboolean$method是否检查多个后缀默认false
  98. *@paramint$postFix后缀个数默认为2
  99. *@returnboolean存在返回true
  100. *@deprecated
  101. *检查文件的后缀是否在类别数组中,类别数组自己设置
  102. *如果$method设置为true则检查文件有几个后缀
  103. */
  104. function_isType($fileName,$method='false',$postFix=2)
  105. {
  106. //设置类别数组
  107. $type=array('jpeg',
  108. 'gif',
  109. 'bmp',
  110. 'exe');
  111. $fileName=strtolower($fileName);
  112. $fileTypeArray=explode('.',$fileName);
  113. $fileType=end($fileTypeArray);
  114. //判断是否有一个文件有多个后缀
  115. if($method)
  116. {
  117. if(count($fileTypeArray)>(is_int($postFix)?$postFix:2))
  118. {
  119. returnfalse;
  120. }
  121. }
  122. returnin_array($fileType,$type);
  123. }
  124. /**
  125. *
  126. *@authorsanshi
  127. *@version1.0.0ThuAug1801:17:19CST2005
  128. *@paramstring$userName
  129. *@returnstring$path
  130. *@deprecated
  131. *建立目录目录格式年/月/日/用户名/
  132. *权限为755
  133. */
  134. function_createDir($userName)
  135. {
  136. $root='';
  137. $pathSign=DIRECTORY_SEPARATOR;
  138. $y=date('Y').$pathSign;
  139. $m=date('m').$pathSign;
  140. $d=date('d').$pathSign;
  141. $path=$root.$y.$m.$d.$userName;
  142. $dirArray=explode($pathSign,$path);
  143. $tempDir='';
  144. foreach($dirArrayas$dir)
  145. {
  146. $tempDir.=$dir.$pathSign;
  147. $isFile=file_exists($tempDir);
  148. clearstatcache();
  149. if(!$isFile&&!is_dir($tempDir))
  150. {
  151. @mkdir($tempDir,0755);
  152. }
  153. }
  154. return$path.$pathSign;
  155. }
  156. /**
  157. *
  158. *@authorsanshi
  159. *@version1.0.0ThuAug1801:19:32CST2005
  160. *@param string$dirName目录名
  161. *@return boolean可以操作返回true
  162. *@deprecated
  163. *判断操作是否在上传目录
  164. */
  165. function_isDel($dirName)
  166. {
  167. //注意upLoadDir,一定要与真正使用目录相对应
  168. $upLoadDir='';
  169. $upLoadDir=preg_replace('/\//','/',$upLoadDir);
  170. $format="/^{$upLoadDir}/";
  171. returnpreg_match($format,$dirName);
  172. }
  173. /**
  174. *
  175. *@authorsanshi
  176. *@version1.0.0ThuAug1801:25:58CST2005
  177. *@paramstring$fileName文件名
  178. *@returnboolean删除文件成功返回true
  179. *@deprecated
  180. *删除文件
  181. */
  182. functiondelFile($fileName)
  183. {
  184. $cur_dir=dirname(trim($fileName));
  185. if($this->_isDel($cur_dir))
  186. {
  187. return@unlink($fileName)?true:false;
  188. }else{
  189. returnfalse;
  190. }
  191. }
  192. /**
  193. *
  194. *@authorsanshi
  195. *@version1.0.0ThuAug1801:27:43CST2005
  196. *@paramstring$dieName目录名
  197. *@returnboolean删除成功返回true
  198. *@deprecated
  199. *删除目录目录下如果有文件不能删除
  200. */
  201. functiondelDir($dirName)
  202. {
  203. if($this->_isDel($dirName)&&is_dir($dirName))
  204. {
  205. return@rmdir($dirName)?true:false;
  206. }else{
  207. returnfalse;
  208. }
  209. }
  210. }
  211. ?>
  212. php
  213. //使用
  214. /*
  215. include'upLoad.class.php';
  216. $up=newupLoad();
  217. if($up->init("file"))
  218. {
  219. echo'success';
  220. }else{
  221. echo'failure';
  222. }
  223. */
  224. ?>

www.bkjia.comtruehttp://www.bkjia.com/PHPjc/446561.htmlTechArticlePHP有很多值得学习的地方,这里我们主要介绍PHP上传类的解决方案,希望大家通过本文有大的收获。用户可以直接在WEB页面中输入PHP命令代...

人气教程排行