SpringMVC文件上传

----------------------siwuxie095

  

  

  

  

  

  

  

SpringMVC 文件上传

  

  

1、导入文件上传的jar 包

  

1Commons FileUpload

  

https://commons.apache.org/proper/commons-fileupload/download_fileupload.cgi

  

  

2Commons 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: 开头,就做页面重定向

  

  

 

参考链接:

  

参考链接1参考链接2参考链接3参考链接4参考链接5

  

  

 

 

 

补:

  

SpringMVC 中 Controller 类的方法的返回值类型:

  

1ModelAndView

  

2Model

  

3ModelMap

  

4Map

  

5View

  

6String

  

7void

  

  

参考链接:

  

参考链接1参考链接2参考链接3

  

  

  

  

  

  

  

  

【made by siwuxie095】

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值