首页后端开发其他后端知识基于Thinkphp5实现多图片上传的思路及方法是什么

基于Thinkphp5实现多图片上传的思路及方法是什么

时间2024-03-25 08:58:04发布访客分类其他后端知识浏览889
导读:这篇文章主要为大家详细介绍了基于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
PHP中的null代表什么,怎么样使用? PHP如何获取学生成绩的?具体方是什么?

游客 回复需填写必要信息