PHP上传类upload.php的主要作用就是帮助我们实现文件上传的功能,希望读者朋友在看后能够实践操作一回,加深对这一类的理解。

我们今天为大家带来的是关于PHP上传类upload.php 的具体用法,希望广大读者朋友能够通过本文所介绍的内容得到帮助,增加我们的知识点。

PHP上传类upload.php的具体使用方法(php实现文件上传)  PHP上传类upload.php 第1张

#t#具体代码如下:

  1. <?php
  2. /**
  3. *我的文件上传类
  4. *
  5. *未完成的功能:
  6. *1.对目标目录是否存在的判断
  7. *2.如果上传时出现重名,自动重命名
  8. *
  9. *@authorM.Q.<[url]www.mengqi.net[/url]>
  10. */
  11. classupload
  12. {
  13. /**
  14. *PHP上传类upload.php上传文件的信息,此值由构造函数取得,如果上传文件失败或出错或未上传,则此值为false
  15. *
  16. *@vararray
  17. */
  18. private$file=false;
  19. /**
  20. *构造函数:取得上传文件的信息
  21. *
  22. *如果在上传文件的工程中发生错误,那么出错的文件不会放在结果中返回,结果中的文件都是可用的
  23. *
  24. *@paramstring$tagform表单中<input>标签中name属性的值,例<inputname="p"type="file">
  25. *
  26. *例1,上传单个文件:
  27. *<inputname="upfile"type="file">
  28. *
  29. *例2,上传多个文件:
  30. *<inputname="upfile[]"type="file">
  31. *<inputname="upfile[]"type="file">
  32. *
  33. *结果(保存在$file变量中)如下:
  34. *
  35. *array(
  36. *[0]=>array(
  37. *'name'=>'abc.txt'
  38. *'type'=>'text/plain’
  39. *'tmp_name'=>'/tmp/phpgxecCb'
  40. *'error'=>0
  41. *'size'=>62
  42. *)
  43. *[1]=>array(
  44. *'name'=>'abc.txt'
  45. *'type'=>'text/plain’
  46. *'tmp_name'=>'/tmp/phpgxecCb'
  47. *'error'=>0
  48. *'size'=>62
  49. *)
  50. *)
  51. */
  52. publicfunction__construct($tag)
  53. {
  54. $file=$_FILES[$tag];
  55. if(!isset($file)||empty($file))
  56. {
  57. return;//没有上传文件
  58. }
  59. $num=count($file['name']);//PHP上传类upload.php上传文件的个数
  60. $data=array();//用来保存上传文件的信息的数组
  61. //上传了多个文件
  62. if($num>1)
  63. {
  64. for($i=0;$i<$num;$i++)
  65. {
  66. $d=array();
  67. $d['name']=$file['name'][$i];
  68. $d['type']=$file['type'][$i];
  69. $d['tmp_name']=$file['tmp_name'][$i];
  70. $d['error']=$file['error'][$i];
  71. $d['size']=$file['size'][$i];
  72. if($d['error']==0)
  73. {
  74. $data[]=$d;
  75. }
  76. else
  77. {
  78. @unlink($d['tmp_name']);
  79. }
  80. }
  81. }
  82. //只上传了一个文件
  83. else
  84. {
  85. $d=array();
  86. $d['name']=$file['name'];
  87. $d['type']=$file['type'];
  88. $d['tmp_name']=$file['tmp_name'];
  89. $d['error']=$file['error'];
  90. $d['size']=$file['size'];
  91. if($d['error']==0)
  92. {
  93. $data[]=$d;
  94. }
  95. else
  96. {
  97. @unlink($d['tmp_name']);
  98. }
  99. }
  100. if(empty($data))return;
  101. $this->file=$data;//保存上传文件的信息
  102. }
  103. /**
  104. *将上传的文件从临时文件夹移动到目标路径
  105. *
  106. *@paramarray$src文件信息数组,是$file数组的其中一个元素(仍然是数组)
  107. *@paramstring$destpath上传的目标路径
  108. *@paramstring$filename上传后的文件名,如果为空,则使用上传时的文件名
  109. *@returnbool
  110. */
  111. publicfunctionsave($src,$destpath,$filename=null)
  112. {
  113. $srcTName=$src['tmp_name'];//原始上传文件的临时文件名
  114. $srcFName=$src['name'];//原始文件名
  115. //如果$filename参数为空,则使用上传时的文件名
  116. if(empty($filename))
  117. {
  118. $filename=$srcFName;
  119. }
  120. //$dest是文件最终要复制到的路径和文件名
  121. if(empty($destpath))
  122. {
  123. $dest=$filename;
  124. }
  125. else
  126. {
  127. //修正路径中的斜杠,将末尾的\修改为/,如果末尾不是\也不是/,则给末尾添加一个/
  128. $pathend=$destpath[strlen($destpath)-1];//上传的目标路径的***一个字符
  129. if($pathend=='\\')
  130. {
  131. $dest=substr_replace($destpath,'/',strlen($destpath)-1).$filename;
  132. }
  133. elseif($pathend!='/')
  134. {
  135. $dest=$destpath.'/'.$filename;
  136. }
  137. else
  138. {
  139. $dest=$destpath.$filename;
  140. }
  141. }
  142. //上传文件成功
  143. if(@move_uploaded_file($srcTName,$dest))
  144. {
  145. returntrue;
  146. }
  147. else
  148. {
  149. returnfalse;
  150. }
  151. }
  152. /**
  153. *取得上传文件的信息
  154. *
  155. *@returnarray
  156. */
  157. publicfunctiongetFileInfo()
  158. {
  159. return$this->file;
  160. }
  161. }
  162. $a=newupload('upfile');
  163. $fileinfo=$a->getFileInfo();
  164. if($fileinfo==false)
  165. {
  166. echo'没有上传文件!';
  167. exit;
  168. }
  169. for($i=0;$i<count($fileinfo);$i++)
  170. {
  171. echo'正在上传'.$fileinfo[$i]['name'].'';
  172. if($a->save($fileinfo[$i],'upload'))echo'完毕';
  173. elseecho'失败';
  174. echo'<br>';
  175. }
  176. ?>

以上代码就是关于PHP上传类upload.php的具体使用方法。

转载请说明出处
知优网 » PHP上传类upload.php的具体使用方法(php实现文件上传)

发表评论

您需要后才能发表评论