SpringMVC的文件上传
文件上传是一个项目里经常要用到的功能,SpringMVC通过配置一个MultipartResolver来上传文件。
在Spring的控制器中,通过MultipartFile file来接收文件,通过MultipartFile[] files接收多个文件上传。
在这里大概进行5步操作,就可以愉快的实现文件的上传
1.首先添加依赖
这个在第四章开始的时候我已经添加好了,可以简化io的操作
2.上传页面,在views下新建upload.jsp页面
3.添加转向upload页面的ViewController
@Override public void addViewControllers(ViewControllerRegistry registry) { registry.addViewController("/index").setViewName("index"); registry.addViewController("/toUpload").setViewName("upload"); }
4.MultipartResolver配置
在这里要注意中文乱码问题,这时候我还没配置全局的字符编码,很容易遇到乱码问题
/** * 上传文件配置 * 注意这里可以设置编码,防止中文乱码 */ @Bean public MultipartResolver multipartResolver(){ CommonsMultipartResolver multipartResolver=new CommonsMultipartResolver(); multipartResolver.setMaxUploadSize(1000000); multipartResolver.setDefaultEncoding("UTF-8"); return multipartResolver; }
5.控制器
这里主要是接收到文件后放在磁盘上,可以查看磁盘文件来验证结果
package com.just.springmvc4.controller; import java.io.File; import org.apache.commons.io.FileUtils; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RestController; import org.springframework.web.multipart.MultipartFile; @RestController public class UploadController { @RequestMapping(value = "/upload",method = RequestMethod.POST) public String uploadFile(MultipartFile file){ try { FileUtils.writeByteArrayToFile(new File("D:\\file\\"+file.getOriginalFilename()),file.getBytes()); return "all is well"; }catch (Exception e){ e.printStackTrace(); return "wrong"; } } }//TODO:这里还没有尝试多文件的上传,有空试下多个文件的上传操作再来展示一波