springmvc文件上传

SpringMVC支持文件上传组件.commons-fileupload组件. commons-fileupload依赖commons-io组件.

1.配置步骤

导入包


2.配置文件的配置

<!--启动注解的默认配置-->
 <mvc:annotation-driven></mvc:annotation-driven>

<!-- 文件上传解释器 -->
<!-- 名字不能写错,一定是multipartResolver -->
<bean name="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
  <!-- 默认编码 -->
  <property name="defaultEncoding" value="UTF-8"></property>
  <!-- 默认内存的大小 b-->
<!--   <property name="maxInMemorySize" value="512000000" ></property> -->
  <!-- 默认文件最大大小,b-->
  <property name="maxUploadSize" value="20000000"></property>

</bean>

3.上传表单

<%@ 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>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>

  文件上传<br/>
  <!-- 要求
  1.method必须是POST
  2.内容类型:multipart/form-data
   -->
  <form action="${pageContext.request.contextPath }/upload.mvc" method="post" enctype="multipart/form-data">
     <input name="file" type="file"> <input type="submit" value="上传">
  </form>

</body>
</html>

4.后台代码

import java.io.File;
import java.io.IOException;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.multipart.MultipartFile;

@Controller
public class FileUploadController {
	
	/**
	 * 单文件上传执行方法
	 * @return
	 */
	@RequestMapping(value="upload")
	public String upload(MultipartFile file){
		System.out.println("-文件上传-");
		//获得文件的原名
		System.out.println(file.getOriginalFilename());
		//创建一个文件
		File destfile=new File("D:/dir/"+file.getOriginalFilename());
		//将读取到的上传文件写入到destfile
		try {
			file.transferTo(destfile);
		} catch (IllegalStateException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return "/upload.jsp";
	}

}

注意,因为核心控制器对上传解释器的名字是固定的. 是multipartResolver,所以我们配置上传解释器,名字必须是multipartResolver

public static final String MULTIPART_RESOLVER_BEAN_NAME =     "multipartResolver";


this.multipartResolver = context.getBean(MULTIPART_RESOLVER_BEAN_NAME, MultipartResolver.class);


表单代码

<%@ 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>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>

  文件上传<br/>
  <!-- 要求
  1.method必须是POST
  2.内容类型:multipart/form-data
  3.多文件上传是使用数组,所以上传框的name要一样
   -->
  <form action="${pageContext.request.contextPath }/multi-upload.mvc" method="post" enctype="multipart/form-data">
     <input name="files" type="file"> <br/>
     <input name="files" type="file"> <br/>
     <input name="files" type="file"> <br/>
     <input type="submit" value="上传">
  </form>

</body>
</html>

后台代码

/**
	 * 多文件文件上传执行方法
	 * 
	 * @return
	 */
	@RequestMapping(value = "multi-upload")
	public String multiUpload(MultipartFile[] files) {
		System.out.println("-文件上传-");
		// 多文件需要使用循环将所有的文件保存到本地
		for (MultipartFile file : files) {
			// 获得文件的原名
			System.out.println(file.getOriginalFilename());
			// 1.创建一个文件,如果file.getOriginalFilename()为空,destfile就是一个文件夹
			File destfile = new File("D:/dir/" + file.getOriginalFilename());
			// 2.将上传文件 保存到写入目标文件
			//判断destfile是个文件在写入
			if (destfile.isFile()) {
				try {
					file.transferTo(destfile);
				} catch (IllegalStateException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				} catch (IOException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
			}
		}

		return "/multi-upload.jsp";
	}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值