SpringMVC文件上传
运用SpringMVC的文件上传,我们只需要一些配置就可以了,很方便!
只需要一下几步就行:
1.新建xml文件,例如:a.xml 配置如下:
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd" default-lazy-init="true"> <!--Controller类的路径--> <bean id="pickMaintainController" class="com.ly.controller.PickMaintainController"></bean> </beans>
2.在spring-application.xml中添加配置如下:
<!-- 支持文件上传 --> <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"/> 在web.xml中添加配置如下: <servlet> <servlet-name>springmvc</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <init-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:resources/codeifAction.xml</param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet>
3.Controller类如下:红色标注为关键
@Controller
public class PickMaintainController {
@RequestMapping("batchUpload")
public String batchUpload(Model model, @RequestParam(value = "file", required = false) MultipartFile file, HttpServletRequest request) {
//上传文件操作
}
}
4.jsp页面:注意name值file和 MultipartFile file一样的
<form id="" method="post" action="" enctype="multipart/form-data"> <input type="file" id="file" name="file" /> </form>
想了想还把上传文件操作贴出来吧:不然你会苦恼的。。。
@RequestMapping("batchUpload") public String batchUpload(Model model, @RequestParam(value = "file", required = false) MultipartFile file, HttpServletRequest request) { //上传文件操作 String path = request.getSession().getServletContext().getRealPath("upload"); String fileName = file.getOriginalFilename(); System.out.println(path); System.out.println(fileName); File targetFile = new File(path, fileName); if(!targetFile.exists()) { targetFile.mkdirs(); } //如果文件存在,就删除 deleteFiles(path+"\\"+fileName, fileName); //保存 try{ file.transferTo(targetFile); }catch(Exception e) { e.printStackTrace(); System.out.println("文件保存失败!"); } String filePath = request.getSession().getServletContext().getRealPath("upload")+"/"+fileName; } //删除指定路径下的文件 public static void deleteFiles(String path, String fileName){ File file = new File(path); //1級文件刪除 if(!file.isDirectory() && file.getName().equals(fileName)){ file.delete(); }else if(file.isDirectory()){ //2級文件列表 String []filelist = file.list(); //获取新的二級路徑 for(int j=0;j<filelist.length;j++){ File filessFile= new File(path+"\\"+filelist[j]); if(!filessFile.isDirectory() && file.getName().equals(fileName)){ filessFile.delete(); }else if(filessFile.isDirectory()){ //递归調用 deleteFiles(path+"\\"+filelist[j], fileName); } } file.delete(); } } }
有问题请留言。。。。