----------------------siwuxie095
SpringMVC 文件上传
1、导入文件上传的jar 包
(1)Commons FileUpload
https://commons.apache.org/proper/commons-fileupload/download_fileupload.cgi
(2)Commons IO
https://commons.apache.org/proper/commons-io/download_io.cgi
2、配置文件上传解析器
在SpringMVC 核心配置文件 dispatcher-servlet.xml 中添加如下内容:
<!-- 配置 MultipartResolver --> <beanid="multipartResolver"class="org.springframework.web.multipart.commons.CommonsMultipartResolver"> <!-- 配置默认编码为 UTF-8 --> <propertyname="defaultEncoding"value="UTF-8"></property> <!-- 配置文件上传的最大值为 5 MB,这里单位为字节,所以是 5*1024*1024 --> <propertyname="maxUploadSize"value="5242880"></property> </bean> |
3、编写一个文件上传的JSP 页面
test.jsp:
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN""http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <metahttp-equiv="Content-Type"content="text/html; charset=UTF-8"> <title>test</title> </head> <body>
<%-- <%=request.getContextPath()%> 等同于 ${pageContext.request.contextPath} --%> <formaction="<%=request.getContextPath()%>/test.do"method="post"enctype="multipart/form-data"> <inputtype="file"name="file"/> <inputtype="submit"value="提交"/> </form>
</body> </html> |
注意两点:
(1)form 表单的 method 属性必须是 post
(2)form 表单的 enctype 属性必须是 multipart/form-data
3、编写一个处理业务逻辑的Controller 类
TestController.java:
package com.siwuxie095.controller;
import java.io.File; import java.io.IOException;
import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.multipart.MultipartFile;
@Controller public class TestController {
/** * 这里返回值是 String 类型,可以看做是特殊的 ModelAndView, * 即只有 ViewName,而没有 Model * * 返回的 ViewName 以 redirect: 开头,表示做页面重定向 */ @RequestMapping("/test") public String test(@RequestParam("file") MultipartFile multipartFile) {
try {
if (multipartFile!=null) {
String fileName = multipartFile.getOriginalFilename(); /* * 也可以写成 F:\\TEMP\\ 注意:需要先在 F 盘创建 TEMP 文件夹 */ File file = new File("F:/TEMP/" + fileName); /* * 调用 transferTo() 方法上传文件 */ multipartFile.transferTo(file);
return"redirect:/succ.jsp"; }
} catch (IllegalStateException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); }
return"redirect:/err.jsp"; }
} |
注意:返回的String 是视图名称,它可以看做是一种特殊的 ModelAndView,
即只有视图名称,没有模型数据
另外:返回的视图名称如果以redirect: 开头,就做页面重定向
参考链接:
补:
SpringMVC 中 Controller 类的方法的返回值类型:
(1)ModelAndView
(2)Model
(3)ModelMap
(4)Map
(5)View
(6)String
(7)void
参考链接:
【made by siwuxie095】