SpringMvc文件上传
小贴士,eclipse中复制一份已有的项目
1.copy,改名
2.右键---properties----web Project Settings—更改访问路径Context root写入新的文件名
一、单个文件上传
1)jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Insert title here</title> <% pageContext.setAttribute("ctp", request.getContextPath()); %> </head> <body> <!-- 文件上传 1.写表单;:enctype="multipart/form-data" 2.导入fileuplod包 commons-fileupload-1.2.1.jar commons-io-2.0.jar 3.javaweb....... 3.现在用框架 只需要在springmvc配置文件中,编写一个文件上传解析器MultiPartResolver九大组件之一 4.文件上传请求处理写Controller --> <!-- action最好写全路径 --> ${msg } <!-- 取一下model保存的提示信息 --> <form action="${ctp }/upload" method="post" enctype="multipart/form-data"> 用户头像:<input type="file" name="headerimg"/><br/> 用户名:<input type="text" name="username"/><br/> <input type="submit"/> </form> </body> </html>
2)springmvc.xml
编写一个文件上传解析器MultiPartResolver九大组件之一,其余配置都是标配
<context:component-scan base-package="com.atguigu"></context:component-scan> <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="prefix" value="/WEB-INF/pages/"></property> <property name="suffix" value=".jsp"></property> </bean> <!-- 配置文件上传解析器MultiPartResolver接口,用CommonsMultipartResolver实现类 id必须是multipartResolver --> <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"> <property name="maxUploadSize" value="#{1024*1024*20}"></property> <property name="defaultEncoding" value="UTF-8"></property> </bean> <mvc:default-servlet-handler/> <mvc:annotation-driven ></mvc:annotation-driven>
3)Controller
@Controller public class FileUploadController { @RequestMapping("/upload") public String upload(@RequestParam(value="username",required = false)String username, @RequestParam("headerimg")MultipartFile file, Model model) { System.out.println("上传文件的信息"); System.out.println("文件的名字:"+file.getName());//假名(jsp文件项的<name=“”>) System.out.println("文件的名字:"+file.getOriginalFilename());//真名 //文件保存 try { file.transferTo(new File("G:\\"+file.getOriginalFilename())); model.addAttribute("msg","文件上传成功了"); } catch (Exception e) { // TODO Auto-generated catch block model.addAttribute("msg","文件上传失败了"+e.getMessage()); } //懒得再写新的jsp了 return "forward:/index.jsp"; } }
二、多个文件上传
1)jsp里多写几个<input type="file" name="headerimg"/><br/>
2)Controller
@Controller public class FileUploadController { @RequestMapping("/upload") public String upload(@RequestParam(value="username",required = false)String username, @RequestParam("headerimg")MultipartFile[] file, Model model) { 对MultipartFile[] file增强型for循环 同上 //懒得再写新的jsp了 return "forward:/index.jsp"; } }