php上传多个文件类型,ThinkPHP上传多文件多类型
首先是使用環(huán)境
在項(xiàng)目中添加個人信息的時候,需要選擇上傳圖片作為頭像還有上傳個人簡歷。頭像的格式是必須圖片,簡歷的格式是文檔格式(含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();//實(shí)例化上傳
$uploads->maxSize???=?????2097152??;//?默認(rèn)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(
//獲取用戶需要添加的數(shù)據(jù)
);
//dump($userlogin);die;
M()->startTrans();//?開啟事務(wù)?操作表
$userid?=M('userlogin')->add($userlogin);//獲取新增用戶的ID
$userinfo=array(
//獲取用詳細(xì)信息表數(shù)據(jù)
);
//判斷頁面上?name="IndustryAnalyseUrl"的key可以獲取到,且input上傳文件選擇的格式在規(guī)定的格式里且文檔大小小于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);//加入用戶詳細(xì)信息表
$role_user_data?=?array(
'role_id'?=>?I('post.roleid'),
'user_id'?=>?$userid,
);
//建立權(quán)限有角色關(guān)系
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("發(fā)生錯誤!");
}
}?else?{
M()->rollback();
$this->error("發(fā)生錯誤!");
}
}
總體思路就是獲取上傳文件實(shí)例化會后的info中的字段和文件類型、后綴名還有size進(jìn)行判斷,
屬性描述key附件上傳的表單名稱
savepath上傳文件的保存路徑
name上傳文件的原始名稱
savename上傳文件的保存名稱
size上傳文件的大小
type上傳文件的MIME類型
ext上傳文件的后綴類型
md5上傳文件的md5哈希驗(yàn)證字符串 僅當(dāng)hash設(shè)置開啟后有效
sha1上傳文件的sha1哈希驗(yàn)證字符串 僅當(dāng)hash設(shè)置開啟后有效
附上ThinkPHP手冊地址:http://www.kancloud.cn/manual/thinkphp/1876
總結(jié)
以上是生活随笔為你收集整理的php上传多个文件类型,ThinkPHP上传多文件多类型的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: linux redis php,Linu
- 下一篇: php 枚举cookie内容,php如何