SpringMVC 上传功能
Spring框架上传jpg文件方法
首先需要准备一个选择图片上传的jsp页面:
<form action=”upload” method =”post” enctype=”multipart/form-data”>/*这个声明是很重要的,表明这个表单支持多元数据,如果没有会导致失败。*/
<input type=”file” accept=”image/*” name =”image” />
<input type=”submit” value=”upload”>
</form>
以上是前端页面,接下来是spring的后端流程
首先在控制器的servlet的xml 上表明支持开放图片上传功能:
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver" />
再创建一个实体类,这个实体类保证spring框架通过javaBean来进行图像文件的对象转换和传输:
public class UplaodImageFile {
MultipartFile image;
public MultipartFile getImage() {
return image;
}
public void setImage(MultipartFile image) {
this.image = image;
}
}
下一步在控制器类包中建立控制器,方法传输两个参数 一个是request对象,用来获取当前的项目的路径,以便获取存储图片的路径,另一个是刚刚创建的实体类UplaodImageFile对象。
方法流程:首先创建一个随机名称,保证图片名字不一样导致覆盖,再获取路径,创建后缀为.Jpg 的file对象 ,完成之后,用 file.getImage().transferTo(newFile) 这条执行语句来完成图片转换上传。
主要代码:public ModelAndView upload(HttpServletRequest request , UplaodImageFile file) throws IOException,IllegalStateException{
String name = RandomStringUtils.randomAlphanumeric(10);
String fileName = name +".jpg";
File newFile = new File(request.getServletContext().getRealPath("/image"),fileName);
//System.out.println(newFile);
newFile.getParentFile().mkdirs();
System.out.println(newFile);
file.getImage().transferTo(newFile);
ModelAndView mav = new ModelAndView("showImage");
mav.addObject("imageName",fileName);
return mav;
}
}