`

SpringMVC——文件上传

 
阅读更多

SpringMVC文件上传:

 

需要jar包:common-fileupload.jar common-io.jar

 

在SpringMVC中,文件上传功能可以由即插即用的CommonsMultipartResolver解析器组件实现,它在org.springframework.web.multipart包里。因此需要实例化此组件。

 

使用方法:

1.配置文件

<!-- 打开文件上载支持  id名字不能写其他的 -->
	<bean id="multipartResolver"
		class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
		<!-- 限制上载文件大小为 100K byte 
		如超过100K会抛出异常-->
		<property name="maxUploadSize" value="102400" />
	</bean>

 

2,jsp页面中的表单设置:

 a) 请求方式必须要用POST方式

 b) enctype必须设置"multipart/form-data"

	<body>
		<h1>文件上传</h1>
		<c:url var="url" value="/upload/file-upload.from"></c:url>
		<form action="${url }" method="post" enctype="multipart/form-data">
			图片:
			<input type="file" name="image" />
			<br />
			作者:
			<input type="text" name="author">
			<br />
			<input type="submit" value="提交">
		</form>
	</body>

 

3,Controller实现

 

   注意:fileUpload(MultipartFile image, String author, ModelMap map,HttpServletRequest req) 这个方法中image的名字要和jsp页面中定义的一致。

  或者使用:fileUpload(@RequestParam(value="image")MultipartFile image, ....)

 

@Controller
@RequestMapping("/upload")
public class UploadController {
	// 显示上传页面
	@RequestMapping("/toUpload.from")
	public String toUploadForm() {
		return "upload";
	}

	@RequestMapping("/file-upload.from")
	public String fileUpload(MultipartFile image, String author, ModelMap map,
			HttpServletRequest req) throws Exception {
		// image.getOriginalFilename() //文件名字
		// image.getName() //是上传的属性名称
		// image.getBytes() //是上载的全部byte数据
		// image.getInputStream() //获取文件数据流,
		// image.getContentType() //获取文件的类型 image/jpg , image/png 等等

		// 1,创建目标文件夹 /WEB-INF/images
		String path = "/WEB-INF/images";
		path = req.getSession().getServletContext().getRealPath(path);
		System.out.println("实际路径:" + path);
		File dir = new File(path);
		if (!dir.exists()) {
			dir.mkdir();
		}
		String uuid = UUID.randomUUID().toString();
		String filename = image.getOriginalFilename(); // 123.png
		String img = uuid + filename.substring(filename.lastIndexOf(".")); // 获取文件名:uuid+".png"
		String txt = uuid + ".txt";
		// 写出图片文件
		FileOutputStream imgOut = new FileOutputStream(new File(dir, img));
		imgOut.write(image.getBytes());
		imgOut.close();
		// 写出元数据文本文件
		PrintWriter out = new PrintWriter(new File(dir, txt));
		out.println("原始文件名:" + filename);
		out.println("作者:" + author);
		out.println("ContentType:" + image.getContentType());
		out.println(image.getBytes());
		out.close();
		// 返回到成功页面
		map.put("msg", "成功上载" + filename);
		return "success";
	}
}

 

下面看完整的ApplicationContext.xml文件

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context"
	xmlns:jdbc="http://www.springframework.org/schema/jdbc" xmlns:jee="http://www.springframework.org/schema/jee"
	xmlns:tx="http://www.springframework.org/schema/tx" xmlns:jpa="http://www.springframework.org/schema/data/jpa"
	xmlns:util="http://www.springframework.org/schema/util" xmlns:mvc="http://www.springframework.org/schema/mvc"
	xsi:schemaLocation="
		http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.2.xsd
		http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.2.xsd
		http://www.springframework.org/schema/jdbc http://www.springframework.org/schema/jdbc/spring-jdbc-3.2.xsd
		http://www.springframework.org/schema/jee http://www.springframework.org/schema/jee/spring-jee-3.2.xsd
		http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.2.xsd
		http://www.springframework.org/schema/data/jpa http://www.springframework.org/schema/data/jpa/spring-jpa-1.3.xsd
		http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-3.2.xsd
		http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.2.xsd">

	<context:component-scan base-package="com.lydia.web" />
	<!-- 支持@RequestMapping请求和Controller映射 -->
	<mvc:annotation-driven />

	<!-- 打开文件上载支持  id名字不能写其他的 -->
	<bean id="multipartResolver"
		class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
		<!-- 限制上载文件大小为 100K byte 
		如超过100K会抛出异常-->
		<property name="maxUploadSize" value="102400" />
	</bean>

	<!-- 视图解析器   -->
	<bean id="viewResolver"  
		class="org.springframework.web.servlet.view.InternalResourceViewResolver">
		<property name="prefix" value="/WEB-INF/jsp/">
		</property>
		<property name="suffix" value=".jsp">
		</property>
	</bean>
	<bean
		class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver">
		<property name="exceptionMappings">
			<props>
				<prop key="java.lang.Exception">error</prop>
	<!--
		<prop key="com.tarena.web.DemoException">error</prop>
	-->
			</props>
		</property>
	</bean>
</beans>

 

测试:如果上传尺寸过大,出现异常



 

 

  • 大小: 10.1 KB
分享到:
评论

相关推荐

    springMVC文件上传所需jar包

    在这个压缩包中包含的两个关键jar文件——`com.springsource.org.apache.commons.io-1.4.0.jar`和`com.springsource.org.apache.commons.fileupload1.2.0.jar`,就是实现SpringMVC文件上传所必需的。 **Apache ...

    学习SpringMVC——国际化+上传+下载详解

    在SpringMVC框架中实现国际化、文件上传和下载功能是开发面向多语言用户的Web应用时常见的需求。以下从国际化、上传和下载三个部分详细阐述知识点。 国际化部分: 1. 国际化(I18N)在Web应用中是至关重要的,它能...

    SpringMVC学习(一)——SpringMVC入门小程序

    在深入学习SpringMVC的过程中,你还将了解到拦截器(Interceptor)、异常处理、数据绑定、国际化、验证、文件上传下载等高级特性。这些知识点有助于你构建功能丰富、性能优良的Web应用。随着经验的积累,你可以结合...

    springmvc文件上传.docx

    #### 二、Spring MVC 文件上传的核心组件——MultipartFile `MultipartFile`接口是Spring MVC提供的用于处理文件上传的主要接口。它实现了`ServletFileUpload`接口,并且提供了一系列方法来帮助开发者处理上传文件...

    springmvc+mybatis实现动态切换数据库

    完整的Demo结合了springmvc——mybatis,实现了工具类文件上传下载,结合了Redis的初步使用,并且能使用threadlocal实现数据库动态切换,很适合初建项目做参考,适合初学者使用。

    java面试——SpringMVC面试专题.zip

    使用MultipartFile处理文件上传,而视图可以直接渲染文件流实现文件下载。 8. **异常处理** 可以通过@ControllerAdvice和@ExceptionHandler全局处理异常,提高代码的可维护性。 9. **RESTful风格** SpringMVC...

    ssm框架下文件上传

    本篇文章将详细探讨在SSM框架下如何实现文件上传,并结合运行环境要求——Tomcat 7及以上版本,讲解相关技术要点。 首先,我们需要了解SpringMVC中的文件上传机制。SpringMVC通过`CommonsMultipartResolver`解析器...

    SpringMVC3.1实例源码

    SpringMVC提供了便捷的文件上传和下载支持,使用MultipartFile接口处理文件上传,通过ResponseEntity或StreamingResponseBody处理大文件下载。 9. **RESTful支持** SpringMVC 3.1加强了对RESTful风格的支持,允许...

    SpringMVC精品资源--OA管理系统。流程审批、用户管理、文件上传下载、消息处理。SpringMVC+MyBa.zip

    【SpringMVC精品资源——OA管理系统】是一个基于SpringMVC框架和MyBatis持久层框架构建的企业级在线办公应用。这个系统集成了多种关键功能,包括流程审批、用户管理、文件上传下载以及消息处理,旨在提升企业内部...

    spring+springmvc+hibernate框架实现单表增删改查、条件查询和分页、文件上传

    6. **文件上传**:SpringMVC提供了处理文件上传的功能,通过`MultipartFile`接口,我们可以接收客户端上传的文件,并将其保存到服务器的指定位置。项目将展示如何配置文件上传处理器,以及处理文件大小限制和错误...

    Javaweb应用图片文件上传并预览,数据库存储路径——ssm实现

    - 对上传文件进行校验,确保文件类型正确,防止恶意文件上传。 - 为避免路径遍历攻击,应使用相对路径且限定在特定目录下。 - 数据库中的路径应该加密存储,避免直接暴露。 5. **性能优化**: - 可以使用七牛云...

    springMVC poi解析ajax上传excel文件,返回json对象\list数组

    此项目是基于springMVC实现的,基本流程为从前台jsp页面使用Ajax文件上传导入excel文件(.xls(97-03)/.xlsx(07以后)),传到后台controller调用相应工具类解析后返回指定参数做后续处理. 1. POIUtil.java工具类 解析...

    狂神说Java-SpringMVC学习笔记

    8、拦截器+文件上传下载 能学到什么:详细了解SpringMVC基础以及使用 阅读建议: 建议配合狂神教学视频使用:...

    Spring_MVC_051:Spring MVC 学习总结(五)——校验与文件上传

    Spring MVC 学习总结(五)——校验与文件上传 目录 2.2.7、范围 2.2.8、其它注解 2.3、注解控制器参数 1.4、在UI中添加错误标签 1.5、测试运行 三、使用jQuery扩展插件Validate实现前端校验 3.1、jQuery扩展插件...

    基于Spring+SpringMVC+MyBatis框架的网上商城管理系统

    本项目采用了一个经典的Java技术栈——Spring、SpringMVC和MyBatis,构建了一个功能完善的网上商城管理系统。这个系统不仅实现了基本的电子商务功能,还考虑了国际化的支持以及图片的动态显示,充分展示了这三个框架...

    springmvc-high-other-05.rar

    7. **上传下载支持**:SpringMVC内置了处理文件上传和下载的功能。通过MultipartFile接口,我们可以方便地处理用户提交的文件,同时,也可以通过StreamingResponseBody实现大文件的下载。 8. **RESTful风格的支持**...

    springmvc各种参数绑定

    在处理文件上传时,`@RequestParam("file") MultipartFile file`可以捕获上传的文件。 源码实现方面,这些绑定机制都基于Spring MVC的核心组件——`HandlerMethodArgumentResolver`接口。Spring MVC通过一系列预...

    springmvc系列教程PDF精讲.

    12. **上传下载**:学习处理文件上传和下载的控制器方法,包括使用CommonsMultipartResolver处理多部分请求。 13. **SpringMVC与Spring整合**:讨论SpringMVC如何与Spring的核心功能如依赖注入(DI)、AOP(面向切...

    Ajax异步上传文件

    SpringMVC作为流行的Java Web框架,支持多种文件上传方式,与Ajax结合可以实现这一功能。 首先,我们需要了解Ajax的核心——XMLHttpRequest对象。这个对象允许JavaScript在不刷新整个页面的情况下与服务器进行通信...

    SpringMVC项目:ALL

    JavaWeb框架——SpringMVC学习过程前端控制器、视图解析器@Controller@RequestMapping(value、method、params)获取请求参数域对象共享数据视图前缀RESTFul文件上传下载拦截器Interceptor异常处理Excepton

Global site tag (gtag.js) - Google Analytics