文件上传类

1,确定文件上传类的成员属性

首先得考虑上传文件需要哪些属性,我们可以随便写一个file文件的post方式的表单提交,然后打印看看$_FILES里有哪些参数

新建file_upload_html.html文件:

代码如下:

    Title 

用户头像上传

用户姓名:张三

现有头像:

获取表单提交的参数,新建file_upload_object.php,代码如下

"; print_r($file); echo "
";

提交表单之后打印结果如下:

微信图片_20180303130949.png

由此可知道上传文件类需要知道上传的文件名称,文件类型,错误标志位,上传的大小

因此我们写一个上传文件类需要知道这些属性,新建一个上传文件类,FileUpload.Class.php

代码如下:


       

2,文件上传类的方法

对文件上传类的属性根据自己业务的需求写一个方法进行管理,

比如上传大小的设置,上传保存路径的设置,方法名叫upload()

具体代码如下:

0){ $errorMsg="错误信息为:"; switch ($file['error']){ case 1:$errorMsg.="文件大小超过了php.ini中upload_max_filesize选项限制的值"; break; case 2:$errorMsg.="文件大小超过了表单中max_file_size选项指定的值!"; break; case 3:$errorMsg.="文件只有部分被上传!"; break; case 4:$errorMsg.="没有文件被上传!"; break; case 6:$errorMsg.="找不到临时文件夹!"; break; case 7:$errorMsg.="临时文件写入失败"; break; default:$errorMsg.='未知错误!'; break; } return false; } //判断上传的文件是否属于$type内 if(!in_array($file['type'],$this->type)){ //不在所属类型内时 $this->errorMessage="未定义的文件上传类型"; return false; } //判断文件上传的大小不能超过所定义的大小 if($file['size']>$this->maxSize){ $this->errorMessage="超出上传所限制的最大上传容量"; return false; } //给上传的图片重命名 $newFileName=uniqid("php_").strrchr($file['name'],"."); //设置上传文件的全目录 ./uploads/2018-03-03 $allPath1=$this->uploadSavePath."/".date("Y-m-d"); $allPath=$this->uploadSavePath."/".date("Y-m-d")."/".$newFileName; //判断这个目录是否存在 if(!file_exists($allPath1)){ mkdir($allPath1,'0777',true); } //移动 if(!move_uploaded_file($file['tmp_name'],$allPath)){ $this->errorMessage="文件上传失败"; }else{ return $allPath; }; } }

3,文件上传处理

对类进行调用生成文件上传类的对象并打印错误信息

在file_upload_object.php里修改代码如下:

upload($file); if(!$allPath){ //上传失败,打印错误信息 echo $fileUpload->errorMessage; //结束运行 die(); } require './file_upload_html.html';

在html页面修改src属性:

微信图片_20180303134258.png

代码如下:

" onerror="this.src='./default.jpg'">

点击选择文件,选好后点击上传,结果如下:

微信图片_20180303134427.png

思考:很明显上传类的头像太大了,如何将上传的头像缩小一点?

(见[PHP]文件与图像教程,里面有详细操作步骤)


继续学习
||
提交 重置代码
关于我们 免责声明 Sitemap
PHP中文网:公益在线PHP培训,帮助PHP学习者快速成长!