springMVC 文件上传(详细步骤)

第一步:导入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

猜你喜欢

转载自blog.csdn.net/weixin_44736475/article/details/106458538