ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
# thinkphp5+layui实现多图上传保存到数据库,可以实现图片自由排序,自由删除。 ![](https://box.kancloud.cn/af664599839ac2813e73e36fa54d7751_878x551.gif) # 公共css代码 在使用前一定要在页面加载layui的css和js ``` <style> .layui-upload-img { width: 90px; height: 90px; margin: 0; } .pic-more { width:100%; left; margin: 10px 0px 0px 0px;} .pic-more li { width:90px; float: left; margin-right: 5px;} .pic-more li .layui-input { display: initial; } .pic-more li a { position: absolute; top: 0; display: block; } .pic-more li a i { font-size: 24px; background-color: #008800; } #slide-pc-priview .item_img img{ width: 90px; height: 90px;} #slide-pc-priview li{position: relative;} #slide-pc-priview li .operate{ color: #000; display: none;} #slide-pc-priview li .toleft{ position: absolute;top: 40px; left: 1px; cursor:pointer;} #slide-pc-priview li .toright{ position: absolute;top: 40px; right: 1px;cursor:pointer;} #slide-pc-priview li .close{position: absolute;top: 5px; right: 5px;cursor:pointer;} #slide-pc-priview li:hover .operate{ display: block;} </style> 多图上传页面html代码 <div class="layui-form-item" id="pics"> <div class="layui-form-label">相册图集</div> <div class="layui-input-block" style="width: 70%;"> <div class="layui-upload"> <button type="button" class="layui-btn layui-btn-primary pull-left" id="slide-pc">选择多图</button> <div class="pic-more"> <ul class="pic-more-upload-list" id="slide-pc-priview"> </ul> </div> </div> </div> </div> 多图添加或修改公共js代码 <script> layui.use('upload', function(){ var $ = layui.jquery; var upload = layui.upload; upload.render({ elem: '#slide-pc', url: '{:url('admin/common/upload')}', size: 500, exts: 'jpg|png|jpeg', multiple: true, before: function(obj) { layer.msg('图片上传中...', { icon: 16, shade: 0.01, time: 0 }) }, done: function(res) { layer.close(layer.msg());//关闭上传提示窗口 if(res.status == 0) { return layer.msg(res.message); } //$('#slide-pc-priview').append('<input type="hidden" name="pc_src[]" value="' + res.filepath + '" />'); $('#slide-pc-priview').append('<li class="item_img"><div class="operate"><i class="toleft layui-icon"></i><i class="toright layui-icon"></i><i class="close layui-icon"></i></div><img src="__STATIC__/../' + res.filepath + '" class="img" ><input type="hidden" name="pc_src[]" value="' + res.filepath + '" /></li>'); } }); }); //点击多图上传的X,删除当前的图片 $("body").on("click",".close",function(){ $(this).closest("li").remove(); }); //多图上传点击<>左右移动图片 $("body").on("click",".pic-more ul li .toleft",function(){ var li_index=$(this).closest("li").index(); if(li_index>=1){ $(this).closest("li").insertBefore($(this).closest("ul").find("li").eq(Number(li_index)-1)); } }); $("body").on("click",".pic-more ul li .toright",function(){ var li_index=$(this).closest("li").index(); $(this).closest("li").insertAfter($(this).closest("ul").find("li").eq(Number(li_index)+1)); }); </script> ``` # //多图上传PHP接口代码 ``` //通用缩略图上传接口 public function upload() { if($this->request->isPost()){ $res['code']=1; $res['msg'] = '上传成功!'; $file = $this->request->file('file'); $info = $file->move('../public/upload/admin/'); //halt( $info); if($info){ $res['name'] = $info->getFilename(); $res['filepath'] = 'upload/admin/'.$info->getSaveName(); }else{ $res['code'] = 0; $res['msg'] = '上传失败!'.$file->getError(); } return $res; } } ``` # //添加控制器代码 ``` //添加 public function add() { if(request()->isPost()) { //dump(input('post.')); $res = $this->db->tianjia(input('post.')); if($res['valid']) { $this->success($res['msg']); }else{ $this->error($res['msg']); } } return $this->fetch(); } ``` # 添加模型代码 ``` //添加 public function tianjia($data) { //halt($data); $count = count($data['pc_src']);//获取传过来有几张图片 if($count){ for($i = 0;$i< $count;$i++){ $data['pics'][]=array("src"=>$data['pc_src'][$i]); } $data['pics'] = json_encode($data['pics']); //$data['cc'] = json_decode($data['bb']); //halt($data); } $result = $this->validate(true)->allowField(true)->save($data); if($result){ // 验证失败 输出错误信息 return ['valid'=>1,'msg'=>'添加成功']; //dump($this->getError()); }else{ return ['valid'=>0,'msg'=>$this->getError()]; } } ``` # //编辑页面 html代码 ``` <div class="layui-form-item" id="pics"> <div class="layui-form-label">相册图集</div> <div class="layui-input-block" style="width: 70%;"> <div class="layui-upload"> <button type="button" class="layui-btn layui-btn-primary pull-left" id="slide-pc">选择多图</button> <div class="pic-more"> <ul class="pic-more-upload-list" id="slide-pc-priview"> {foreach name="oldData['pics']" item="vo" key="k"} <li class="item_img"> <div class="operate"><i class="toleft layui-icon"></i><i class="toright layui-icon"></i><i class="close layui-icon"></i></div> <img src="__STATIC__/../{$vo.src}" class="img" > <input type="hidden" name="pc_src[]" value="{$vo.src}" /> </li> {/foreach} </ul> </div> </div> </div> </div> ```