springboot2.X文件(图片)上传及大小限制

springboot2.X——文件(图片)上传及大小限制

    • 问题描述
    • 环境简介
    • 目录结构
    • 错误示例
    • 正确示例
    • 前台示例
    • 后台示例
    • 结语

问题描述

图片文件上传,分文件夹保存,单个、多个上传,移动端和web端上传出现错误(格式、大小等)

环境简介

::maven项目
::前端layui,bootstrap,jquery
::win10
:: Spring Boot (v2.1.4.RELEASE)
::jdk1.8
::tomcat8.5
::maven3.2.3
::MySQL5.7

目录结构

于要害处已,涂抹,见谅springboot2.X文件(图片)上传及大小限制_第1张图片

错误示例

properties文件如果配置为如下内容,会类型转换错误

spring.servlet.multipart.max-file-size = 4Mb
spring.servlet.multipart.max-request-size=20Mb

控制台错误提示:failed to convert java.lang.String to org.springframework.util.unit.DataSize

正确示例

properties文件如果配置为如下内容(MB的大小)

spring.servlet.multipart.max-file-size = 4MB
spring.servlet.multipart.max-request-size=20MB

前台示例

上传组件引入:

(根据文件引入目录确定引入路径)
上传触发按钮:
上传触发事件:

  layui.use('upload', function(){ //初始化组件
							  var upload = layui.upload;
							   
							  //执行实例
							  var uploadInst = upload.render({
							    elem: '#test11' //绑定元素
							    ,url: '/daren_web/uploadImage2/openid/123' //上传接口
							     ,multiple: false//是否多文件上传
							    ,accept: 'images' //只允许上传图片
							    ,acceptMime: 'image/*' //只筛选图片
							    ,size: 1024*4 //限定大小
							    ,done: function(res){
							      //上传完毕回调
							      //JSON.parse(jsonstr);可以将json字符串转换成json对象 
								//JSON.stringify(jsonobj);可以将json对象转换成json对符串   
								var resultData = JSON.stringify(res);
							      console.info(resultData);
							    }
							    ,error: function(){
							      //请求异常回调
							    }
							  });
							});

后台示例

//引入的包:(仅供参考)
import java.io.File;
import java.io.IOException;
import java.util.UUID;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.multipart.MultipartFile;
@RequestMapping({"/uploadImage2/{number}/{uid}"})
  @ResponseBody
  public String uploadaaa(MultipartFile file,@PathVariable("uid")String uid ,@PathVariable("number")String number) {
		 
	  try {
		
	  		//SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");
		    String path = "C:/Users/laijiangkeliuxingming/Desktop/"+number+"/"+uid+"/";//文件保存位置
		    UUID uuid = UUID.randomUUID();//生成唯一标识
		    String originalFilename = file.getOriginalFilename();
		    String extendName = originalFilename.substring(originalFilename.lastIndexOf("."), originalFilename.length());
		    String fileName = uuid.toString() + extendName;//新名称
		    File dir = new File(path + fileName);
		    File filepath = new File(path);
		   
		    System.out.println("路径==" + filepath.getParentFile());
		   //判断文件夹是否存在,否则新建
		      if (!filepath.exists())
		        
		    	  filepath.mkdirs();
		     
		      else {
		       
		    	  System.out.println(filepath.getParentFile());
		     
		      }
		
		      file.transferTo(dir);
		    }catch (IllegalStateException e){
		     
		    	e.printStackTrace();
		    
		    }catch (IOException e) {
		    
		    	e.printStackTrace();
		   
		    }
		    String str = "";//layui可识别的json字符串(仅供参考)
		    str = "{\"code\":0,\"msg\":\"\",\"data\":{\"src\":\"http://cdn.layui.com/123.jpg\"}}";
		
		    return str;
		  }

结语

出现问题,包括但不限于以下原因:
application.properties配置文件有空格,jar包正确导入,项目运行
1:前台数据无法传输(传输协议、请求头、数据绑定、数据名称、数据格式、数据类型)
2:后台代码数据接收(注解使用、限定请求方式post/get、数据类型、数据名称)
3:后台接收数据没有正确解析
仅供我们小白参考,不提供代码,不保证复制粘贴使用,疑则百度,留言次之。

你可能感兴趣的:(springboot,java,springboot,图片上传)