第一步:导入jar包
commons-io-2.2.jar
commons-fileupload-1.4.jar
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>2.2</version>
</dependency>
<dependency>
<groupId>commons-fileupload</groupId>
<artifactId>commons-fileupload</artifactId>
<version>1.4</version>
</dependency>
第二步:在springmvc.xml文件中配置文件解析器
<!-
-配置文件解析器,处理文件,将客户端上传的File文件,处理为MultipartFile
-->
<bean id ="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<!-- 设置文件解析的编码,注意:一定要和页面的pageEncoding保持一致 -->
<property name="defaultEncoding" value="UTF-8"></property>
<!-- 设置最大上传文件大小 -->
<property name="maxUploadSize" value="999999999"></property>
</bean>
注意:id必须为multipartResolver。
第三步:编写form表单
<form action="up" method="post" enctype="multipart/form-data">
头像:<input type="file" name="uploadFile">
描述:<input type="text" name="desc">
<input type="submit" value="上传">
</form>
必须加上enctype=“multipart/form-data”,multipart/form-data这种编码方式以二进制流的方式来处理表单数据,这种编码方式会把文件域指定文件的内容也封装到请求参数中,不会对字符编码。
第四步:编写控制层代码
@RequestMapping(value="/up",method=RequestMethod.POST)
public String addProduct(MultipartFile uploadFile,String desc,HttpServletRequest request,Model model)throws IOException{
String path = request.getSession().getServletContext().getRealPath("/static/images/");
File file=new File(path);
if(!file.exists())
file.mkdirs();
//获取文件上传的名称
String filename = uploadFile.getOriginalFilename();
//防止文件重名
String uuid = UUID.randomUUID().toString().replace("-", "");
filename = uuid+"_"+filename;
String f = "/ssm/static/images/"+filename;
model.addAttribute("file", f);
uploadFile.transferTo(new File(path,filename));
return "success";
}
springMVC中使用MultipartFile 对象来接收上传的文件,通过这个对象可以得到文件的文件名和文件类型,通过 transferTo() 方法将文件写入到磁盘。
这样就实现了将文件上传至服务器,如果是批量上传的话,只要做如下修改。(表单中name都为uploadFile。)
<form action="up" method="post" enctype="multipart/form-data">
头像1:<input type="file" name="uploadFile">
头像2:<input type="file" name="uploadFile">
头像3:<input type="file" name="uploadFile">
头像4:<input type="file" name="uploadFile">
描述:<input type="text" name="desc">
<input type="submit" value="上传">
</form>
控制层代码:
@RequestMapping(value="/up",method=RequestMethod.POST)
public String addProduct(MultipartFile []uploadFile,String desc,HttpServletRequest request,Model model)throws IOException