这篇文章主要介绍“PHP中upload.php的具体使用方法”,在日常操作中,相信很多人在PHP中upload.php的具体使用方法问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”PHP中upload.php的具体使用方法”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!
我们今天为大家带来的是关于PHP上传类upload.php 的具体用法,希望广大读者朋友能够通过本文所介绍的内容得到帮助,增加我们的知识点。
具体代码如下:
<?php /** * 我的文件上传类 * * 未完成的功能: * 1.对目标目录是否存在的判断 * 2.如果上传时出现重名,自动重命名 * * @author M.Q. <[url]www.mengqi.net[/url]> */ class upload { /** * PHP上传类upload.php上传文件的信息,此值由构造函数取得,如果上传文件失败或出错或未上传,则此值为false * * @var array */ private $file = false; /** * 构造函数:取得上传文件的信息 * * 如果在上传文件的工程中发生错误,那么出错的文件不会放在结果中返回,结果中的文件都是可用的 * * @param string $tag form表单中<input>标签中name属性的值,例<input name="p" type="file"> * * 例1,上传单个文件: * <input name="upfile" type="file"> * * 例2,上传多个文件: * <input name="upfile[]" type="file"> * <input name="upfile[]" type="file"> * * 结果(保存在$file变量中)如下: * * array( * [0] => array( * 'name' => 'abc.txt' * 'type' => 'text/plain’ * 'tmp_name' => '/tmp/phpgxecCb' * 'error' => 0 * 'size' => 62 * ) * [1] => array( * 'name' => 'abc.txt' * 'type' => 'text/plain’ * 'tmp_name' => '/tmp/phpgxecCb' * 'error' => 0 * 'size' => 62 * ) * ) */ public function __construct($tag) { $file = $_FILES[$tag]; if (!isset($file) || empty($file)) { return; //没有上传文件 } $num = count($file['name']); //PHP上传类upload.php上传文件的个数 $data = array(); //用来保存上传文件的信息的数组 //上传了多个文件 if ($num > 1) { for($i = 0; $i < $num; $i++) { $d = array(); $d['name'] = $file['name'][$i]; $d['type'] = $file['type'][$i]; $d['tmp_name'] = $file['tmp_name'][$i]; $d['error'] = $file['error'][$i]; $d['size'] = $file['size'][$i]; if ($d['error'] == 0) { $data[] = $d; } else { @unlink($d['tmp_name']); } } } //只上传了一个文件 else { $d = array(); $d['name'] = $file['name']; $d['type'] = $file['type']; $d['tmp_name'] = $file['tmp_name']; $d['error'] = $file['error']; $d['size'] = $file['size']; if ($d['error'] == 0) { $data[] = $d; } else { @unlink($d['tmp_name']); } } if (empty($data)) return; $this -> file = $data; //保存上传文件的信息 } /** * 将上传的文件从临时文件夹移动到目标路径 * * @param array $src 文件信息数组,是$file数组的其中一个元素(仍然是数组) * @param string $destpath 上传的目标路径 * @param string $filename 上传后的文件名,如果为空,则使用上传时的文件名 * @return bool */ public function save($src, $destpath, $filename = null) { $srcTName = $src['tmp_name']; //原始上传文件的临时文件名 $srcFName = $src['name']; //原始文件名 //如果$filename参数为空,则使用上传时的文件名 if (empty($filename)) { $filename = $srcFName; } //$dest是文件最终要复制到的路径和文件名 if (empty($destpath)) { $dest = $filename; } else { //修正路径中的斜杠,将末尾的\修改为/,如果末尾不是\也不是/,则给末尾添加一个/ $pathend = $destpath[strlen($destpath) - 1]; //上传的目标路径的***一个字符 if ($pathend == '\\') { $dest = substr_replace($destpath, '/', strlen($destpath)-1).$filename; } else if ($pathend != '/') { $dest = $destpath.'/'.$filename; } else { $dest = $destpath.$filename; } } //上传文件成功 if (@move_uploaded_file($srcTName, $dest)) { return true; } else { return false; } } /** * 取得上传文件的信息 * * @return array */ public function getFileInfo() { return $this->file; } } $a = new upload('upfile'); $fileinfo = $a -> getFileInfo(); if ($fileinfo == false) { echo '没有上传文件!'; exit; } for($i = 0; $i < count($fileinfo); $i++) { echo '正在上传 '.$fileinfo[$i]['name'].' '; if ($a -> save($fileinfo[$i], 'upload')) echo '完毕'; else echo '失败'; echo '<br>'; } ?>
到此,关于“PHP中upload.php的具体使用方法”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注亿速云网站,小编会继续努力为大家带来更多实用的文章!
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。