ssm框架和layui实现上传功能

前端:

引入js和css

<link rel="stylesheet" href="bootstarp/layui/css/layui.css" media="all">

<script src="bootstarp/layui/layui.js" charset="utf-8"></script>

按钮:

  <button type="button" class="layui-btn layui-btn-primary" id="picList">

                        <i class="layui-icon">&#xe61f;</i>选择文件

</button>

 <button type="button" class="layui-btn" id="manyPicUpload">
                                        <i class="layui-icon"></i>开始上传

   </button>

js部分:  注:多问健上传实际上是在前端单文件循环上传

    /*上传下载js*/
        layui.use('upload',function() {
                    var $ = layui.jquery, upload = layui.upload;

                    //图片上传
                    upload.render({
                    elem : '#test2',
                    url : 'pic/upload',
                    multiple : false,
                    auto : false,
                    bindAction : '#1vnupload',
                    before : function(obj) {
                                //预读本地文件示例,不支持ie8
                                obj.preview(function(index,file, result) {
                                        $('#1vNCompare').empty();
                                        $('#1vNCompare').append('<div class="thumbnail text-overflow" style="text-align: center;">'
                                                                + '<img src="' + result + '" />'
                                                                + '<h3>'
                                                                + "原始图片"
                                                                + '</h3>'
                                                                + '</div>');
                                                });
                                        },
                                        done : function(res) {
                                            //上传完毕
                                        }
                                    });
                              
                            //多文件列表示例
                            var ListView = $('#uploadList'), uploadListIns = upload
                                    .render({
                                        elem : '#picList', //表示单击某按钮激发上传
                                        url : 'pic/upload', //文件上传路径
                                        accept : 'file',  //文件上传格式默认为image
                                        multiple : true,//是否多文件上传true是多文件
                                        auto : false,//是否自动上传
                                        bindAction : '#manyPicUpload',//点击上传和auto:fasle组合使用
                                        data : {  //其它需要传递的数据 支持下面这样动态传值
                                            repname : function() {
                                                var uploadName =""+ $("#uploadName").val();
                                                var selectbank_1=""+$("#selectbank_1").text();
                                                if(uploadName!==''){
                                                    return uploadName;
                                                }
                                                return selectbank_1;
                                            }
                                        },
                                        choose : function(obj) { //选择上传的文件
                                            var files = this.files = obj.pushFile(); //将每次选择的文件追加到文件队列
                                            //设置总文件数量计算初始值
                                            var j=0;
                                            //读取本地文件
                                            obj.preview(function(index,file, result) {
                                                    j++;
                                                    /* alert(j); */
                                                    var tr = $(['<tr id="upload-' + index + '">','<td>'
                                                                + file.name
                                                                + '</td>','<td>'+ (file.size / 1014).toFixed(1)
                                                                + 'kb</td>',
                                                                '<td>等待上传</td>',
                                                                '<td>',
                                                                '<button class="layui-btn layui-btn-mini img-reload layui-hide">重传</button>',
                                                                '<button class="layui-btn layui-btn-mini layui-btn-danger img-delete">删除</button>',
                                                                '</td>',
                                                                '</tr>' ]
                                                                .join(''));

                                                        //单个重传
                                                        tr.find('.img-reload').on('click',
                                                                    function() {
                                                                         obj.upload(index,file);
                                                                        });

                                                        //删除
                                                        tr.find('.img-delete').on('click',
                                                                        function() {
                                                                            delete files[index]; //删除对应的文件
                                                                            tr.remove();
                                                                            uploadListIns.config.elem.next()[0].value = ''; //清空 input file 值,以免删除后出现同名文件不可选
                                                                        });

                                                        ListView.append(tr);
                                                    });
                                                //将文件总数j显现到页面
                                                    
                                        },
                                        done : function(res, index, upload) {//上传后返回的结果
                                            i++;
                                            alert(i);
                                            if (res.code == 0) { //上传成功
                                                var tr = ListView.find('tr#upload-'+ index), tds = tr.children();
                                                tds.eq(2).html('<span style="color: #5FB878;">上传成功</span>');
                                                tds.eq(3).html(''); //清空操作
                                                return delete this.files[index]; //删除文件队列已经上传成功的文件
                                            }
                                            this.error(index, upload);
                                        },
                                        error : function(index, upload) {
                                            var tr = ListView.find('tr#upload-'
                                                    + index), tds = tr.children();
                                            tds.eq(2).html('<span style="color: #FF5722;">上传失败</span>');
                                            tds.eq(3).find('.img-reload').removeClass('layui-hide'); //显示重传
                                        }
                                    });
                        });

说明:上传文件必须依赖‘uplaod’模块否则不能使用。

后端:

需要引用jar包:1.commons-upload.jar

                        2.commons-io.jar  (主要是upload.jar要依赖此包)

需要在springMVC.xml中加入(否则不能接收到前端的参数)

   <!-- 配置上传功能 -->
<bean id="multipartResolver"   class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
        <property name="maxInMemorySize">
            <value>1638400</value>
        </property>
     </bean>

controller层: MultipartFile----用来接受上传的文件  repname--data中传的额外参数

   @ResponseBody
    @RequestMapping("upload")
    public Map<String,Object> manyImageUpload(MultipartFile file,String repname) throws IOException{
        System.out.println("---------upload------------");
        //调用服务层来处理数据
        System.out.println("name="+repname);
        System.out.println("=="+file.getName());//文件名字
        System.out.println("1="+file.getContentType());
        System.out.println("2="+file.getOriginalFilename());
        System.out.println("3="+file.getSize());
        System.out.println("--"+file.getInputStream());
        
        //返回结果
        Map<String,Object> aMap=new HashMap<String, Object>();
        aMap.put("code", 0);
        return aMap;
    }



猜你喜欢

转载自blog.csdn.net/weixin_41929877/article/details/80188149