SpringBoot+layui实现文件上传功能

时间:2021-09-01 16:41:31

什么是spring boot

spring boot是由pivotal团队提供的全新框架,其设计目的是用来简化新spring应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。用我的话来理解,就是spring boot其实不是什么新的框架,它默认配置了很多框架的使用方式,就像maven整合了所有的jar包,spring boot整合了所有的框架(不知道这样比喻是否合适)。

页面代码(只需要引入基础layui的css与js)

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<fieldset class="layui-elem-field layui-field-title" style="margin-top: 30px;">
 <legend>多文件列表上传</legend>
</fieldset>
<div class="layui-upload">
 <button type="button" class="layui-btn layui-btn-normal" id="testlist">选择多文件</button>
 <div class="layui-upload-list">
  <table class="layui-table">
   <thead>
    <tr><th>文件名</th>
    <th>大小</th>
    <th>状态</th>
    <th>操作</th>
   </tr></thead>
   <tbody id="demolist"></tbody>
  </table>
 </div>
 <button type="button" class="layui-btn" id="testlistaction">开始上传</button>
</div>

js

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
layui.use('upload', function(){
 var $ = layui.jquery
 ,upload = layui.upload;
 //多文件列表示例
 var demolistview = $('#demolist')
 ,uploadlistins = upload.render({
  elem: '#testlist'
  ,url: 'upload/uploadfile'
  ,accept: 'file'
  ,multiple: true
  ,auto: false
  ,size: 5120
  ,bindaction: '#testlistaction'
  ,choose: function(obj){ 
   var files = this.files = obj.pushfile(); //将每次选择的文件追加到文件队列
   //读取本地文件
   obj.preview(function(index, file, result){
    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 demo-reload layui-hide">重传</button>'
      ,'<button class="layui-btn layui-btn-mini layui-btn-danger demo-delete">删除</button>'
     ,'</td>'
    ,'</tr>'].join(''));
    //单个重传
    tr.find('.demo-reload').on('click', function(){
     obj.upload(index, file);
    });
    //删除
    tr.find('.demo-delete').on('click', function(){
     delete files[index]; //删除对应的文件
     tr.remove();
     uploadlistins.config.elem.next()[0].value = ''; //清空 input file 值,以免删除后出现同名文件不可选
    });
    demolistview.append(tr);
   });
  }
  ,done: function(res, index, upload){
   if(res.code == 0){ //上传成功
    var tr = demolistview.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 = demolistview.find('tr#upload-'+ index)
   ,tds = tr.children();
   tds.eq(2).html('<span style="color: #ff5722;">上传失败</span>');
   tds.eq(3).find('.demo-reload').removeclass('layui-hide'); //显示重传
  }
 });
});

后台接收

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
public final static string upload_file_path = "d:\\uploadfile\\";
 @requestmapping(value = "uploadfile")
 public string uploadimage(@requestparam("file") multipartfile file) {
   if (!file.isempty()) {
     map<string, string> resobj = new hashmap<>(map_size);
     try {
       bufferedoutputstream out = new bufferedoutputstream(
           new fileoutputstream(new file(upload_file_path, file.getoriginalfilename())));
       out.write(file.getbytes());
       out.flush();
       out.close();
     } catch (ioexception e) {
       resobj.put("msg", "error");
       resobj.put("code", "1");
       return jsonobject.tojsonstring(resobj);
     }
     resobj.put("msg", "ok");
     resobj.put("code", "0");
     return jsonobject.tojsonstring(resobj);
   } else {
     return null;
   }
 }

总结

以上所述是小编给大家介绍的springboot+layui实现文件上传功能,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对服务器之家网站的支持!

原文链接:https://blog.csdn.net/butterBallj/article/details/80647741