首先是使用环境
在项目中添加个人信息的时候,需要选择上传图片作为头像还有上传个人简历。头像的格式是必须图片,简历的格式是文档格式(含PDF)
下面是代码带注释
//添加用户逻辑操作 public function addUserHandleAction(){ $photo_arr = array('jpg','gif','png','jpeg');//允许上传头像格式 $indus_arr = array('xls','xlsx','doc','docx','wps','txt','pdf','ppt','pptx');//允许上传文档格式 $uploads = new \Think\uploads();//实例化上传 $uploads->maxSize = 2097152 ;// 默认2M大小 $uploads->exts = array_merge($photo_arr,$indus_arr);//拼接上传格式 $uploads->rootPath = './Public/User/';//上传路径 $uploads->savePath = ''; $info = $uploads->uploads(); if(!$info){ $this->error($uploads->getError());//捕获错误 } //dump($info);die; $userlogin = array( //获取用户需要添加的数据 ); //dump($userlogin);die; M()->startTrans();// 开启事务 操作表 $userid =M('userlogin')->add($userlogin);//获取新增用户的ID $userinfo=array( //获取用详细信息表数据 ); //判断页面上 name="IndustryAnalyseUrl"的key可以获取到,且input上传文件选择的格式在规定的格式里且文档大小小于2M if($info["IndustryAnalyseUrl"]["key"]=="IndustryAnalyseUrl" && in_array(str_replace('.', '', $info["IndustryAnalyseUrl"]["ext"]), $indus_arr) && $info["IndustryAnalyseUrl"]["size"]<1024*1024*2 ){ $userinfo['IndustryAnalyseUrl'] = '/Public/User/'.$info["IndustryAnalyseUrl"]['savepath'].$info["IndustryAnalyseUrl"]['savename']; }else{ //添加失败不符合要求的文档被删除 unlink('./Public/User/'.$info["IndustryAnalyseUrl"]['savepath'].$info["IndustryAnalyseUrl"]['savename']); } //同上 if($info["PhotoUrl"]["key"]=="PhotoUrl" && in_array(str_replace('.', '', $info["PhotoUrl"]["ext"]), $photo_arr) && $info["PhotoUrl"]["size"]<1024*200){ $userinfo['PhotoUrl'] = '/Public/User/'.$info["PhotoUrl"]['savepath'].$info["PhotoUrl"]['savename']; }else{ //添加失败不符合要求的图片被删除 unlink('./Public/User/'.$info["PhotoUrl"]['savepath'].$info["PhotoUrl"]['savename']); } M('userinfo')->add($userinfo);//加入用户详细信息表 $role_user_data = array( 'role_id' => I('post.roleid'), 'user_id' => $userid, ); //建立权限有角色关系 if(D('role_user')->add($role_user_data)) { M()->commit(); $this->success("添加用户完成",U("Admin/User/index")); } else { //添加失败删除上传的文件 unlink('.'.$userinfo['IndustryAnalyseUrl']); unlink('.'.$userinfo['PhotoUrl']); M()->rollback(); $this->error("发生错误!"); } } else { M()->rollback(); $this->error("发生错误!"); } }
总体思路就是获取上传文件实例化会后的info中的字段和文件类型、后缀名还有size进行判断,
属性 | 描述 |
---|---|
key | 附件上传的表单名称 |
savepath | 上传文件的保存路径 |
name | 上传文件的原始名称 |
savename | 上传文件的保存名称 |
size | 上传文件的大小 |
type | 上传文件的MIME类型 |
ext | 上传文件的后缀类型 |
md5 | 上传文件的md5哈希验证字符串 仅当hash设置开启后有效 |
sha1 | 上传文件的sha1哈希验证字符串 仅当hash设置开启后有效 |
附上ThinkPHP手册地址:http://www.kancloud.cn/manual/thinkphp/1876
上一篇: HTML上传文件类型选择...
下一篇: HTML5上传图片预览...
高工 2018-01-02 16:56 Win 7 广东省河源市
01/15 17:34 回复 @高工 中说到:
,大佬厉害了