文件的上传
首先在html页面写一个form表单,用post方法传到控制器,再写一个enctype="multipart/form-data"表示上传
<form action="/upload" method="post" enctype="multipart/form-data"> 文件上传<input type="file" name="file"><br/> <input type="submit" value="提交"> </form>
文本框的属性要是file。提交到控制器后,要从html接受这个上传的值。所以要写
MultipartFile 这里面写的是html页面的name,他们两个一定要一致,
@PostMapping(value ="/upload") public Map shangchuan(MultipartFile file,HttpServletRequest request){ map.clear(); //拿到上传的文件名 String name=file.getOriginalFilename(); //改名,防止重名 String newName=new Date().getTime()+new Random().nextInt(99999999)+name; //得到上传路径 String path=request.getServletContext().getRealPath("/upload"); //把这个path赋值给这个f File f=new File(path); //如果这个保存文件的路径不存在就创建这个路径 if(!f.exists()){ f.mkdir();//创建目录 } File f1=new File(path+newName); try { file.transferTo(f1); System.out.println(path+name); map.put("msg","成功"); } catch (IOException e) { e.printStackTrace(); map.put("msg","失败"); } return map; }
然后你可以在初始Springboot启动类里面配置这个图片最低的kb和最大的kb.
//对文件上传做一个配置。 public MultipartConfigElement multipartConfigElement(){ MultipartConfigFactory factory=new MultipartConfigFactory(); factory.setMaxFileSize(DataSize.parse("1024kb")); factory.setMaxRequestSize(DataSize.parse("102400kb")); return factory.createMultipartConfig(); }
写到这里,启动的话会报The field file exceeds its maximum permitted size of 1048576 bytes.错误,显示文件的大小超出了允许的范围。查看了官方文档,原来Spring Boot工程嵌入的tomcat限制了请求的文件大小。原因是每个文件的配置最大为1Mb,单次请求的文件的总数不能大于10Mb。这时候你需要在配置文件里面写入两个配置。
需要设置以下两个参数
spring.servlet.multipart.max-file-size=100MB
spring.servlet.multipart.max-request-size=1000MB
这里面的大小随你设置。