关于springboot的图片上传(异步实现)

1、使用到了layui框架中的文件上传,所以前端HTML查看如下:

<link rel="stylesheet" href="./layui/css/layui.css" />
<script type="text/javascript" src="./layui/layui.js" charset="utf-8"></script>
<form class="layui-form" enctype="multipart/form-data">
     <div class="layui-form-item">
         <label class="layui-form-label">
             <span class="x-red">*</span>头像
         </label>
         <div class="layui-upload">
        <!-- img 中显示图片,demoText中显示出发生异常的信息,点击按钮更新图片就会更新图片。-->
             <div class="layui-upload-list layui-input-inline">
             <img id="img" src="" class="layui-upload-img" title="头像" width="60px" height="60px" />
                 <p id="demoText"></p>
             </div>
             <button type="button" name="img" class="layui-btn" id="test1">更新图片</button>
         </div>
         <div><input type="hidden" name="headPath" id="headPath"></div>
     </div>
</form>

前端页面实现:在这里插入图片描述

2、前端jq信息(通过响应按钮,前端将图片信息发送到后端的服务器,):

<script>layui.use(['form', 'layer','laydate','upload'],
    function() {
        $ = layui.jquery;
        var laydate = layui.laydate;
        var form = layui.form,
            layer = layui.layer,
            upload = layui.upload;

        //普通图片上传
        var uploadInst = upload.render({
            elem: '#test1'
            ,url: '/updateImg' //改成您自己的上传接口
            ,before: function(obj){
                //预读本地文件示例,不支持ie8
                obj.preview(function(index, file, result){
                    console.log(file);  // 前端上传这个文件名。
                    $('#img').attr('src', result); //图片链接(base64)
                });
            }
            ,done: function(res){
                //如果上传失败
                if(res == null){
                    alert("上传失败")
                }
                $("#headPath").val(res.data);
                console.log(res)
                //上传成功
            }
            ,error: function(){
                //演示失败状态,并实现重传
                var demoText = $('#demoText');
                demoText.html('<span style="color: #FF5722;">上传失败</span> <a class="layui-btn layui-btn-xs demo-reload">重试</a>');
                demoText.find('.demo-reload').on('click', function(){
                    uploadInst.upload();
                });
            }
        });
</script>

springboot后端java代码接收信息:
1、配置好json格式转换,先配置引用

 <!-- json格式转换-->
 <dependency>
     <groupId>com.alibaba</groupId>
     <artifactId>fastjson</artifactId>
     <version>1.2.28</version>
 </dependency>

2、设置配置application.properties信息

#单个文件大小
spring.servlet.multipart.maxFileSize=10MB
#总上传大小限制
spring.servlet.multipart.maxRequestSize=30MB

3、配置图片的下载位置以及修改图片名称

  // 更新图片信息
    @RequestMapping("updateImg")
    JSONObject updateImg(@RequestParam("file") MultipartFile file){

        // 获取 webapp目录
        System.out.println(this.getClass().getResource("/"));
        System.out.println(this.getClass().getResource("/").getPath());
        System.out.println(this.getClass().getResource("/").getPath().replaceFirst("/",""));
        String path = this.getClass().getResource("/").getPath().replaceFirst("/", "").replace("/BOOT-INF/classes","/");
        path += "public/";
        File isfile = new File(path);
        if (!isfile.exists()){
            isfile.mkdir();
        }
        System.out.println(path);
        // 获取文件名
        String originalFilename = file.getOriginalFilename();
        String filename = formateDate(new Date()) + originalFilename;
        path += filename;
        System.out.println("上传文件路径:" + path);
        try {
            File file1 = new File(path);
            file.transferTo(file1);//将文件以file1的路径存放到服务器本地
        } catch (Exception e) {
            e.printStackTrace();
        }
        // 返回的信息为json类型。
        JSONObject jsonObject = new JSONObject();
        jsonObject.put("code", 0);
        jsonObject.put("msg", "");
        jsonObject.put("data", filename); //data存储服务器 上传的文件名
        return jsonObject;
    }

    private String formateDate(Date date){
        SimpleDateFormat format = new SimpleDateFormat("yyyyMMddHHmmssSSS");
        return format.format(date);
    }

在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值