SpringMVC支持文件上传

第一步:导入包 commons-fileuplad组件

第二步:配置springmvc支持上传组件

(1)启动SpringMVC注解支持

(2)配置上传解释器 (对象名必须是固定)

第三步:构建一个上传表单

第四步:在业务控制器编写保存上传文件的逻辑

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.后台代码

package cn.gzsxt.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.multipart.MultipartFile;

@Controller

public class FileUploadController {

/**

 * 注意接收上传文件的接口

 * SpringMVC的业务控制器执行方法,除了已经有内置对象的接口,可以声明接口。

 * 如果内内置对象声明接口会报错。

 * 原因,只有在执行方法上面放一个类或者接口,SpringMVC会先去容器查找是否否兼容类型的对象,

 * 如果有,就赋予给它,如果没有就会重新创建一个新的对象,如果声明了接口,容器原来没有,新创建的时候就会报错。

 *

 * SpringMVC常见的内置对象有

 * 1.Model

 * 2.ModelMap

 * 3.HttpServletRequest

 * 4.HttpServletResponse

 * 5.HttpSession

 * 6.MultipartFile

 * @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) {

e.printStackTrace();

} catch (IOException e) {

e.printStackTrace();

}

return "/upload.jsp";

}

}

猜你喜欢

转载自www.cnblogs.com/bky-lxm/p/10747586.html