1.在applicationContext.xml中配置解析类
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver" p:defaultEncoding="utf-8"
p:maxUploadSize="5242880"/>
2.编写controller,将文件捆绑在MultipartFile
@RequestMapping(value = "/addBlog")
public String addBlog(Model model, Blog blog, @RequestParam("uploadfile") MultipartFile file, HttpServletRequest request) {
if (!file.isEmpty()) {
String type = file.getOriginalFilename().substring(
file.getOriginalFilename().indexOf("."));// 取文件格式后缀名
String filename = System.currentTimeMillis() + type;// 取当前时间戳作为文件名
blog.setBlogPhoto("uploadImages/"+filename);
String path = request.getSession().getServletContext()
.getRealPath("/uploadImages/" + filename);// 存放位置
File destFile = new File(path);
try {
file.transferTo(destFile);
} catch (IOException e) {
e.printStackTrace();
}
}
blogServiceInterface.addBlogService(blog);
return "addSuccess";
}
3.MultipartFile常用方法
byte[] getBytes():获取文件数据
String getContentType():获取文件MIME,如:image/pipeg,text/plain等
InputStream getInputStream():获取文件流
String getName():获取表单中文件组件的名字
String getOriginalFilename():获取上传文件的原名
long getSize();获取文件的字节大小,单位是byte
Boolean isEmpty():是否有上传的文件
void transferTo(File dest):可以使用该函数将上传文件保存到一个目标文件
4.在spring文件上传中如果还有普通文本时不需要去特地判断是什么数据(普通文本或二进制数据),spring框架会自动将相应的数据捆绑到你自己指定的对象中。如下边方法的参数所描述的就是:
public String addBlog(Model model, Blog blog, @RequestParam("uploadfile") MultipartFile file, HttpServletRequest request)
将普通的文本封装到blog中,二进制文件数据封装到file中