php上传多个文件类型,ThinkPHP上传多文件多类型

首先是使用环境

在项目中添加个人信息的时候,需要选择上传图片作为头像还有上传个人简历。头像的格式是必须图片,简历的格式是文档格式(含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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值