PHP上传类upload.php的主要作用就是帮助我们实现文件上传的功能,希望读者朋友在看后能够实践操作一回,加深对这一类的理解。
我们今天为大家带来的是关于PHP上传类upload.php 的具体用法,希望广大读者朋友能够通过本文所介绍的内容得到帮助,增加我们的知识点。
#t#具体代码如下:
- <?php
- /**
- *我的文件上传类
- *
- *未完成的功能:
- *1.对目标目录是否存在的判断
- *2.如果上传时出现重名,自动重命名
- *
- *@authorM.Q.<[url]www.mengqi.net[/url]>
- */
- classupload
- {
- /**
- *PHP上传类upload.php上传文件的信息,此值由构造函数取得,如果上传文件失败或出错或未上传,则此值为false
- *
- *@vararray
- */
- private$file=false;
- /**
- *构造函数:取得上传文件的信息
- *
- *如果在上传文件的工程中发生错误,那么出错的文件不会放在结果中返回,结果中的文件都是可用的
- *
- *@paramstring$tagform表单中<input>标签中name属性的值,例<inputname="p"type="file">
- *
- *例1,上传单个文件:
- *<inputname="upfile"type="file">
- *
- *例2,上传多个文件:
- *<inputname="upfile[]"type="file">
- *<inputname="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
- *)
- *)
- */
- publicfunction__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;//保存上传文件的信息
- }
- /**
- *将上传的文件从临时文件夹移动到目标路径
- *
- *@paramarray$src文件信息数组,是$file数组的其中一个元素(仍然是数组)
- *@paramstring$destpath上传的目标路径
- *@paramstring$filename上传后的文件名,如果为空,则使用上传时的文件名
- *@returnbool
- */
- publicfunctionsave($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;
- }
- elseif($pathend!='/')
- {
- $dest=$destpath.'/'.$filename;
- }
- else
- {
- $dest=$destpath.$filename;
- }
- }
- //上传文件成功
- if(@move_uploaded_file($srcTName,$dest))
- {
- returntrue;
- }
- else
- {
- returnfalse;
- }
- }
- /**
- *取得上传文件的信息
- *
- *@returnarray
- */
- publicfunctiongetFileInfo()
- {
- return$this->file;
- }
- }
- $a=newupload('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'完毕';
- elseecho'失败';
- echo'<br>';
- }
- ?>
以上代码就是关于PHP上传类upload.php的具体使用方法。
转载请说明出处
知优网 » PHP上传类upload.php的具体使用方法(php实现文件上传)
知优网 » PHP上传类upload.php的具体使用方法(php实现文件上传)