当前位置:Gxlcms > PHP教程 > PHP上传类upload.php的具体使用方法_PHP教程

PHP上传类upload.php的具体使用方法_PHP教程

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

我们今天为大家带来的是关于具体代码如下:

  1. php
  2. /**
  3. * 我的文件上传类
  4. *
  5. * 未完成的功能:
  6. * 1.对目标目录是否存在的判断
  7. * 2.如果上传时出现重名,自动重命名
  8. *
  9. * @author M.Q. <[url]www.mengqi.net[/url]>
  10. */
  11. class upload
  12. {
  13. /**
  14. * PHP上传类upload.php上传文件的信息,此值由构造函数取得,如果上传文件失败或出错或未上传,则此值为false
  15. *
  16. * @var array
  17. */
  18. private $file = false;
  19. /**
  20. * 构造函数:取得上传文件的信息
  21. *
  22. * 如果在上传文件的工程中发生错误,那么出错的文件不会放在结果中返回,结果中的文件都是可用的
  23. *
  24. * @param string $tag form表单中<input>标签中name属性的值,例<input name="p" type="file">
  25. *
  26. * 例1,上传单个文件:
  27. * <input name="upfile" type="file">
  28. *
  29. * 例2,上传多个文件:
  30. * <input name="upfile[]" type="file">
  31. * <input name="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. public function __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. * @param array $src 文件信息数组,是$file数组的其中一个元素(仍然是数组)
  107. * @param string $destpath 上传的目标路径
  108. * @param string $filename 上传后的文件名,如果为空,则使用上传时的文件名
  109. * @return bool
  110. */
  111. public function save($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. else if ($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. return true;
  146. }
  147. else
  148. {
  149. return false;
  150. }
  151. }
  152. /**
  153. * 取得上传文件的信息
  154. *
  155. * @return array
  156. */
  157. public function getFileInfo()
  158. {
  159. return $this->file;
  160. }
  161. }
  162. $a = new upload('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. else echo '失败';
  174. echo '<br>';
  175. }
  176. ?>

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


www.bkjia.comtruehttp://www.bkjia.com/PHPjc/446389.htmlTechArticle我们今天为大家带来的是关于 具体代码如下: ? php /** *我的文件上传类 * *未完成的功能: *1.对目标目录是否存在的判断 *2.如果上传时出现...

人气教程排行