基于Thinkphp5实现多图片上传的思路及方法是什么
导读:这篇文章主要为大家详细介绍了基于Thinkphp5实现多图片上传的思路及方法是什么的内容,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望对大家学习或工作能有帮助,接下来就跟随小编一起来学习吧。 tp5使用layu...
这篇文章主要为大家详细介绍了基于Thinkphp5实现多图片上传的思路及方法是什么的内容,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望对大家学习或工作能有帮助,接下来就跟随小编一起来学习吧。tp5使用layui实现多个图片上传(带附件选择),如何加载layui在此不详细说明,有需要可以百度
html代码,主要处理都是在jq中,完成方法全部原创,也许不是最简单的,但也能实现效果
{ include file="public/header" /} body> div class="x-nav"> span class="layui-breadcrumb"> a href=""> 首页/a> a href=""> 多选图片列表/a> a> cite> 添加多选图片/cite> /a> /span> a class="layui-btn layui-btn-small" style="line-height:1.6em; margin-top:3px; float:right" href="javascript:location.replace(location.href); " rel="external nofollow" title="刷新"> i class="layui-icon" style="line-height:30px"> ဂ/i> /a> /div> div class="x-body"> div class="top" style="font-size: 14px"> 添加多选图片/div> div style="width:100%; height: 5px; background-color: #077ee3; margin-top: 5px; margin-bottom: 20px"> /div> form action="" enctype="multipart/form-data" method="post" role="form" onSubmit="return check()"> div class="layui-upload"> button type="button" class="layui-btn" id="upload_img"> 多图片上传/button> a class="layui-btn layui-btn-sm layui-btn-normal" onclick="selectImg('选择图片','{ :url("selectImg")} ','1000','600')" href="javascript:; " rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" > i class="layui-icon"> & #xe60a; /i> 选择图片 /a> blockquote class="layui-elem-quote layui-quote-nm" style="margin-top: 10px; "> 预览图: div class="layui-upload-list" id="demo2"> /div> /blockquote> /div> input name="url" class="imgInput" type="hidden"> !--button type="button" class="layui-btn" onclick="test()"> --> !--测试--> !--/button> --> div class="layui-form-item"> label for="" class="layui-form-label"> /label> button type="submit" class="layui-btn btnAdd" lay-filter="add" lay-submit=""> 增加 /button> /div> /form> /div> style> .imgInput{ width: 600px; height: 35px; } .layui-form-label{ font-size: 14px; width: 100px; } select{ width: 500px; } #pre_img{ display: none; padding: 5px; border: 1px solid #999; } #demo2{ display: flex; display: -webkit-flex; /*justify-content: space-between; */ flex-direction: row; flex-wrap: wrap; } .img{ width: 150px; height: 150px; } .btnAdd{ margin-top: 40px; } .img_item{ display: flex; flex-direction: column; text-align: center; margin-right: 20px; margin-bottom: 20px; } .delimg{ text-align: center; line-height: 20px; width: 160px; height: 20px; background-color: red; color: white; margin-top: 5px; } /style> script> function check(){ $('input[name="url"]').val(urlList); var str = $('input[name="url"]').val(); if(str ==''|| str==null || str=='undefined'){ alert("请选择图片"); return false; } } function selectImgGo($url,$urlWeb){ var index = 0; if(urlList.length> 0){ index = urlList.length; } var img = $([ 'div class="img_item"> ', 'div class="img" style="overflow:hidden; "> ', 'img src="'+ $urlWeb +'" alt="' + $url +'" class="layui-upload-img" style="max-width:150px; "> /div> ', 'div class="delimg" id="delimg" onclick=delImg("'+ index +'") href="javascript:; " rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" style="cursor:pointer "> 删除/div> /div> ' ].join('')); $('#demo2').append(img); urlList.push($url); imgList.push($urlWeb); } var imgList = []; var urlList = []; layui.use(['upload','jquery'],function () { $ = layui.jquery; var upload = layui.upload; //多图片上传 upload.render({ elem: '#upload_img' ,url:"{ :url('share/upload_img')} " //上传接口 ,multiple: true ,before: function(obj){ //预读本地文件示例,不支持ie8 obj.preview(function(index, file, result){ } ) } ,done: function(res){ var index0 = 0; if(urlList.length> 0){ index0 = urlList.length; } var img0 = $([ 'div class="img_item"> ', 'div class="img" style="overflow:hidden; "> ', 'img src="'+ res.msg +'" class="layui-upload-img" style="max-width:150px; "> /div> ', 'div class="delimg" id="delimg" onclick=delImg("'+ index0 +'") href="javascript:; " rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" style="cursor:pointer "> 删除/div> /div> ' ].join('')); $('#demo2').append(img0); urlList.push(res.url); imgList.push(res.msg); } ,error: function(){ // layer.close(layer.msg()); //关闭上传提示窗口 //请求异常回调 } } ); } ); function delImg(index){ urlList.splice(index,1); imgList.splice(index,1); $('#demo2').empty(); for (var i=0; iimgList.length; i++){ var img0 = $([ 'div class="img_item"> ', 'div class="img" style="overflow:hidden; "> ', 'img src="'+ imgList[i] +'" class="layui-upload-img" style="max-width:150px; "> /div> ', 'div class="delimg" id="delimg" onclick=delImg("'+ i +'") href="javascript:; " rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" style="cursor:pointer "> 删除/div> /div> ' ].join('')); $('#demo2').append(img0); } } /*选择图片*/ function selectImg(title,url,w,h){ x_admin_show(title,url,w,h); } /script> /body> /html>
php代码
//php layui图片上传 public function upload_img(){ $file = request()-> file('file'); // 获取上传的文件 if($file==null){ exit(json_encode(array('code'=> 1,'msg'=> '未上传图片'))); } else{ //5、对上传文件做出条件限制(类型,大小等) $map = [ 'ext'=> 'jpg,png,gif,jpeg',//后辍名 'size'=> 320000000,//最大3M ]; //6、对上传的文件进行较验,如果合格就进行转移到预定设定好的public/uploads目录下 //返回保存的文件信息info,包括文件名和大小等数据 $info = $file-> validate($map)-> move(ROOT_PATH . 'public/uploads/img'); //获取图片宽高 list( $width , $height , $type , $attr ) = getimagesize ($info-> getPathName()); if(is_null($info)){ $this-> error($info-> getError()); } $img = str_replace('\\','/',$info-> getSaveName()); //保存附件 $annexData['filesize'] = $info-> getInfo()['size']; $annexData['mimetype'] = $info-> getInfo()['type']; $annexData['filename'] = $info-> getInfo()['name']; $annexData['imagewidth'] = $width; $annexData['imageheight'] = $height; $annexData['type'] = 'img'; $annexData['url'] = $img; AAnnexModel::create($annexData); $img = constant("URL")."/uploads/img/".$img; exit(json_encode(array('code'=> 0,'msg'=> $img,'url'=> $annexData['url']))); } } //多选图片添加页面 public function addImages(){ if($this-> request-> isPost()){ //2、获取提交过来的数据,最后true参数,表示连上传文件一起获取 $data = $this-> request-> param(true); $res = AImagesModel::create($data); if(is_null($res)){ $this-> error('文件添加失败'); } else{ $this-> success('文件添加成功...',url('imagesList')); } return; } return $this-> fetch('images_add'); }
通过以上内容的阐述,相信大家对“基于Thinkphp5实现多图片上传的思路及方法是什么”已经有了进一步的了解,更多相关的问题,欢迎关注网络或到官网咨询客服。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: 基于Thinkphp5实现多图片上传的思路及方法是什么
本文地址: https://pptw.com/jishu/652674.html