`

spring MVC 文件上传

阅读更多

spring支持在网络应用程序处理文件上传,提供拔插的org.springframework.web.multipart.MultipartResolver对象 。

在写上传文件的前提下需提供两个jar包:


1.添加上传拦截,可指定上传的大小

 

Java代码 复制代码 收藏代码
  1. <!-- 上传拦截,如最大上传值及最小上传值 -->   
  2.     <bean id="multipartResolver"  
  3.         class="org.springframework.web.multipart.commons.CommonsMultipartResolver">   
  4.         <!-- one of the properties available; the maximum file size in bytes -->   
  5.         <property name="maxUploadSize" value="100000" />   
  6.     </bean>  
<!-- 上传拦截,如最大上传值及最小上传值 -->
	<bean id="multipartResolver"
		class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
		<!-- one of the properties available; the maximum file size in bytes -->
		<property name="maxUploadSize" value="100000" />
	</bean>

 2.添加java后台处理的API

 

Java代码 复制代码 收藏代码
  1. @RequestMapping(value = "/form", method = RequestMethod.POST)   
  2. public String handleFormUpload(@RequestParam("name") String name,   
  3. @RequestParam("file") MultipartFile file) {   
  4. if (!file.isEmpty()) {   
  5. byte[] bytes = file.getBytes();   
  6. // 去理上传写文件代码   
  7.   
  8. }  
@RequestMapping(value = "/form", method = RequestMethod.POST)
public String handleFormUpload(@RequestParam("name") String name,
@RequestParam("file") MultipartFile file) {
if (!file.isEmpty()) {
byte[] bytes = file.getBytes();
// 去理上传写文件代码

}

 

具体文件

    spring_mvc.xml

 

Xml代码 复制代码 收藏代码
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <beans xmlns="http://www.springframework.org/schema/beans"  
  3.     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
  4.     xmlns:p="http://www.springframework.org/schema/p"  
  5.     xmlns:context="http://www.springframework.org/schema/context"  
  6.     xsi:schemaLocation="   
  7.         http://www.springframework.org/schema/beans   
  8.         http://www.springframework.org/schema/beans/spring-beans-3.0.xsd   
  9.         http://www.springframework.org/schema/context   
  10.         http://www.springframework.org/schema/context/spring-context-3.0.xsd">  
  11.     <!-- 注解资源扫描包路径 -->  
  12.     <context:component-scan base-package="org.spring.mvc" />  
  13.     <bean  
  14.         class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping" />  
  15.   
  16.     <bean  
  17.         class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter" />  
  18.   
  19.     <!--  对模型视图名称的解析,即在模型视图名称添加前后缀,在requestmapping输入的地址后自动调用该类进行视图解析-->  
  20.     <bean id="viewResolver"  
  21.         class="org.springframework.web.servlet.view.InternalResourceViewResolver">  
  22.         <property name="viewClass"  
  23.             value="org.springframework.web.servlet.view.JstlView" />  
  24.         <property name="prefix" value="/" /><!-- 跳转页面的前缀路径 如 /web-inf/user/ -->  
  25.         <property name="suffix" value=".jsp"></property><!-- 跳转页面后缀 如 helloWorld.jsp-->  
  26.     </bean>  
  27.   
  28.     <!-- 上传拦截,如最大上传值及最小上传值 -->  
  29.     <bean id="multipartResolver"  
  30.         class="org.springframework.web.multipart.commons.CommonsMultipartResolver">  
  31.         <!-- one of the properties available; the maximum file size in bytes -->  
  32.         <property name="maxUploadSize" value="100000" />  
  33.     </bean>  
  34.   
  35. </beans>  
<?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:p="http://www.springframework.org/schema/p"
	xmlns:context="http://www.springframework.org/schema/context"
	xsi:schemaLocation="
		http://www.springframework.org/schema/beans
		http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
		http://www.springframework.org/schema/context
		http://www.springframework.org/schema/context/spring-context-3.0.xsd">
	<!-- 注解资源扫描包路径 -->
	<context:component-scan base-package="org.spring.mvc" />
	<bean
		class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping" />

	<bean
		class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter" />

	<!--  对模型视图名称的解析,即在模型视图名称添加前后缀,在requestmapping输入的地址后自动调用该类进行视图解析-->
	<bean id="viewResolver"
		class="org.springframework.web.servlet.view.InternalResourceViewResolver">
		<property name="viewClass"
			value="org.springframework.web.servlet.view.JstlView" />
		<property name="prefix" value="/" /><!-- 跳转页面的前缀路径 如 /web-inf/user/ -->
		<property name="suffix" value=".jsp"></property><!-- 跳转页面后缀 如 helloWorld.jsp-->
	</bean>

	<!-- 上传拦截,如最大上传值及最小上传值 -->
	<bean id="multipartResolver"
		class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
		<!-- one of the properties available; the maximum file size in bytes -->
		<property name="maxUploadSize" value="100000" />
	</bean>

</beans>

 

FileUploadController.java文件

 

Java代码 复制代码 收藏代码
  1. package org.spring.mvc.upload;   
  2.   
  3. import java.io.FileOutputStream;   
  4. import java.io.IOException;   
  5. import java.io.InputStream;   
  6. import java.util.List;   
  7.   
  8. import org.slf4j.Logger;   
  9. import org.slf4j.LoggerFactory;   
  10. import org.spring.mvc.HelloWorldController;   
  11. import org.springframework.stereotype.Controller;   
  12. import org.springframework.web.bind.annotation.RequestMapping;   
  13. import org.springframework.web.bind.annotation.RequestMethod;   
  14. import org.springframework.web.bind.annotation.RequestParam;   
  15. import org.springframework.web.multipart.MultipartFile;   
  16. import org.springframework.web.multipart.MultipartHttpServletRequest;   
  17.   
  18. /**  
  19.  * 上传文件  
  20.  * @author chenyw  
  21.  *  
  22.  */  
  23. @Controller  
  24. @RequestMapping(value = "/toFileUpload")   
  25. public class FileUploadController {   
  26.     private Logger logger = LoggerFactory.getLogger(HelloWorldController.class);   
  27.   
  28.     /**  
  29.      * 单文件上传  
  30.      * @param name @RequestParam 取得name字段的值  
  31.      * @param file 文件  
  32.      * @return  
  33.      * @throws IOException  
  34.      */  
  35.     @RequestMapping(value = "/oneFileUpload", method = RequestMethod.POST)   
  36.     public String handleFormUpload(@RequestParam("name")   
  37.     String name, @RequestParam("file")   
  38.     MultipartFile file) throws IOException {   
  39.            
  40.         logger.info("name:"+name);   
  41.         logger.info("上传文件:"+file.getOriginalFilename());   
  42.         if (!file.isEmpty()) {   
  43.              this.copyFile(file.getInputStream(), file.getOriginalFilename());   
  44.                
  45.         }    
  46.         return "fileUpload/success";   
  47.     }   
  48.   
  49.       /**  
  50.        * 多文件上传  
  51.        * @param request  
  52.        * @param name  
  53.        * @return  
  54.        * @throws Exception  
  55.        */  
  56.       @RequestMapping(value = "/multipartFileUpload",method = RequestMethod.POST)   
  57.          public String upload2(   
  58.             MultipartHttpServletRequest request ,   
  59.             @RequestParam("name") String name    // 页面上的控件值   
  60.             ) throws Exception {   
  61.           List<MultipartFile> files = request.getFiles("file");   
  62.           forint i=0; i<files.size() ;i++){   
  63.                if(! files.get(i).isEmpty()) {   
  64.                    logger.info("上传文件:"+files.get(i).getOriginalFilename());   
  65.                   this.copyFile(files.get(i).getInputStream(), files.get(i).getOriginalFilename());   
  66.                }   
  67.           }   
  68.           logger.info("success");   
  69.           return "fileUpload/success";   
  70.          }   
  71.        
  72.       /**  
  73.        * 写文件到本地  
  74.        * @param in  
  75.        * @param fileName  
  76.        * @throws IOException  
  77.        */  
  78.       private void copyFile(InputStream in,String fileName) throws IOException{   
  79.           FileOutputStream fs = new FileOutputStream("d:/upload/"  
  80.                     + fileName);   
  81.             byte[] buffer = new byte[1024 * 1024];   
  82.             int bytesum = 0;   
  83.             int byteread = 0;   
  84.             while ((byteread = in.read(buffer)) != -1) {   
  85.                 bytesum += byteread;   
  86.                 fs.write(buffer, 0, byteread);   
  87.                 fs.flush();   
  88.             }   
  89.             fs.close();   
  90.             in.close();   
  91.       }   
  92.         
  93.        
  94. }  
package org.spring.mvc.upload;

import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.List;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.spring.mvc.HelloWorldController;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.multipart.MultipartHttpServletRequest;

/**
 * 上传文件
 * @author chenyw
 *
 */
@Controller
@RequestMapping(value = "/toFileUpload")
public class FileUploadController {
	private Logger logger = LoggerFactory.getLogger(HelloWorldController.class);

	/**
	 * 单文件上传
	 * @param name @RequestParam 取得name字段的值
	 * @param file 文件
	 * @return
	 * @throws IOException
	 */
	@RequestMapping(value = "/oneFileUpload", method = RequestMethod.POST)
	public String handleFormUpload(@RequestParam("name")
	String name, @RequestParam("file")
	MultipartFile file) throws IOException {
		
		logger.info("name:"+name);
		logger.info("上传文件:"+file.getOriginalFilename());
		if (!file.isEmpty()) {
			 this.copyFile(file.getInputStream(), file.getOriginalFilename());
			
		} 
		return "fileUpload/success";
	}

	  /**
	   * 多文件上传
	   * @param request
	   * @param name
	   * @return
	   * @throws Exception
	   */
	  @RequestMapping(value = "/multipartFileUpload",method = RequestMethod.POST)
	     public String upload2(
	        MultipartHttpServletRequest request ,
	        @RequestParam("name") String name    // 页面上的控件值
	        ) throws Exception {
	      List<MultipartFile> files = request.getFiles("file");
	      for( int i=0; i<files.size() ;i++){
	           if(! files.get(i).isEmpty()) {
	        	   logger.info("上传文件:"+files.get(i).getOriginalFilename());
	              this.copyFile(files.get(i).getInputStream(), files.get(i).getOriginalFilename());
	           }
	      }
	      logger.info("success");
	      return "fileUpload/success";
	     }
	
	  /**
	   * 写文件到本地
	   * @param in
	   * @param fileName
	   * @throws IOException
	   */
	  private void copyFile(InputStream in,String fileName) throws IOException{
		  FileOutputStream fs = new FileOutputStream("d:/upload/"
					+ fileName);
			byte[] buffer = new byte[1024 * 1024];
			int bytesum = 0;
			int byteread = 0;
			while ((byteread = in.read(buffer)) != -1) {
				bytesum += byteread;
				fs.write(buffer, 0, byteread);
				fs.flush();
			}
			fs.close();
			in.close();
	  }
	 
	
}

 

 

单文件上传页面oneFileUpload.jsp

 

Jsp代码 复制代码 收藏代码
  1. <%@ page language="java" import="java.util.*" pageEncoding="GBK"%>   
  2. <%   
  3. String path = request.getContextPath();   
  4. String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";   
  5. %>   
  6.   
  7. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">   
  8. <html>   
  9.   <head>   
  10.     <base href="<%=basePath%>">   
  11.        
  12.     <title>My JSP 'oneFileUpload.jsp' starting page</title>   
  13.        
  14.     <meta http-equiv="pragma" content="no-cache">   
  15.     <meta http-equiv="cache-control" content="no-cache">   
  16.     <meta http-equiv="expires" content="0">       
  17.     <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">   
  18.     <meta http-equiv="description" content="This is my page">   
  19.     <!--   
  20.     <link rel="stylesheet" type="text/css" href="styles.css">   
  21.     -->   
  22.   
  23.   </head>   
  24.      
  25.   <body>   
  26.     This is my onefileUpload page. <br>   
  27.     <form method="POST" action="toFileUpload/oneFileUpload" enctype="multipart/form-data">   
  28.         <input type="text" name="name"/>   
  29.         <input type="file" name="file"/>   
  30.         <input type="submit"/>   
  31.     </form>   
  32.   </body>   
  33. </html>  
<%@ page language="java" import="java.util.*" pageEncoding="GBK"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <base href="<%=basePath%>">
    
    <title>My JSP 'oneFileUpload.jsp' starting page</title>
    
	<meta http-equiv="pragma" content="no-cache">
	<meta http-equiv="cache-control" content="no-cache">
	<meta http-equiv="expires" content="0">    
	<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
	<meta http-equiv="description" content="This is my page">
	<!--
	<link rel="stylesheet" type="text/css" href="styles.css">
	-->

  </head>
  
  <body>
    This is my onefileUpload page. <br>
    <form method="POST" action="toFileUpload/oneFileUpload" enctype="multipart/form-data">
		<input type="text" name="name"/>
		<input type="file" name="file"/>
		<input type="submit"/>
	</form>
  </body>
</html>

 

多文件上传页面multipartFileUpload.jsp

 

 

Jsp代码 复制代码 收藏代码
  1. <%@ page language="java" import="java.util.*" pageEncoding="GBK"%>   
  2. <%   
  3. String path = request.getContextPath();   
  4. String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";   
  5. %>   
  6.   
  7. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">   
  8. <html>   
  9.   <head>   
  10.     <base href="<%=basePath%>">   
  11.        
  12.     <title>My JSP 'multipartFileUpload.jsp' starting page</title>   
  13.        
  14.     <meta http-equiv="pragma" content="no-cache">   
  15.     <meta http-equiv="cache-control" content="no-cache">   
  16.     <meta http-equiv="expires" content="0">       
  17.     <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">   
  18.     <meta http-equiv="description" content="This is my page">   
  19.     <!--   
  20.     <link rel="stylesheet" type="text/css" href="styles.css">   
  21.     -->   
  22.   
  23.   </head>   
  24.      
  25.   <body>   
  26.     This is multipartFileUpload page. <br>   
  27.     <form method="POST" action="toFileUpload/multipartFileUpload" enctype="multipart/form-data">   
  28.         <input type="text" name="name"/><br>   
  29.         <input type="file" name="file"/><br>   
  30.         <input type="file" name="file"/><br>   
  31.         <input type="submit"/><br>   
  32.     </form>   
  33.   </body>   
  34. </html>  
分享到:
评论
3 楼 kcher_8 2014-03-13  
多谢博主分享,终于把问题解决了。
2 楼 a52071453 2012-12-23  
zhcheng 写道
我按照你写的配置上,为什么报400的错误呢!

你在试试 我亲身在项目上用的 。 把错误贴出来也可以
1 楼 zhcheng 2012-10-30  
我按照你写的配置上,为什么报400的错误呢!

相关推荐

    spring mvc文件上传实现进度条

    总的来说,实现Spring MVC文件上传的进度条功能需要前端和后端的紧密配合。前端负责用户交互和进度信息的显示,后端则需处理分块上传、进度跟踪和异步响应。通过这样的方式,我们可以在不阻塞用户界面的情况下,提供...

    Spring MVC 文件上传下载 后端 - Java.zip

    在Spring MVC框架中,文件上传和下载是常见的功能需求,特别是在构建Web应用程序时。这个压缩包文件"Spring MVC 文件上传下载 后端 - Java.zip"包含的文档可能详细阐述了如何在Java后端实现这些功能。以下是关于...

    Spring MVC文件上传

    在Spring MVC框架中,文件上传是一项常见的功能,它允许用户通过Web界面上传本地文件到服务器。这篇文章将深入探讨如何在Spring MVC中实现文件上传,并基于提供的链接和文件名称列表进行详细解析。 首先,理解文件...

    spring mvc 文件上传 代码完整版

    在Spring MVC框架中,文件上传是一项常见的功能,用于接收用户通过表单提交的文件数据。这一功能对于构建Web应用程序,尤其是那些需要用户交互并处理上传文件的系统来说至关重要。本项目提供了一个完整的、经过测试...

    Spring MVC文件上传下载

    本篇文章将深入探讨Spring MVC如何实现文件上传和下载。 ### 文件上传 1. **依赖配置**:在Spring MVC项目中,为了支持文件上传,需要引入Apache Commons FileUpload库,它提供了处理多部分HTTP请求的能力。在`pom...

    spring mvc文件上传下载实例

    这篇博客“spring mvc文件上传下载实例”将引导我们如何在Spring MVC项目中实现这两个功能。 首先,我们需要理解Spring MVC的基本概念。Spring MVC是Spring框架的一个模块,它提供了处理HTTP请求并返回响应的能力,...

    Spring MVC 文件上传下载

    Spring MVC 是一个强大的 web 应用开发框架,它提供了丰富的功能来处理用户请求,包括文件上传和下载。本文将深入探讨如何使用 Spring MVC 实现文件的上传与下载。 首先,要实现文件上传,我们需要引入一些必要的...

    第五章 Spring MVC 文件上传

    标题 "第五章 Spring MVC 文件上传" 涉及的核心知识点主要围绕Spring MVC框架中的文件上传功能,这是一个在Web开发中常见的需求,特别是处理用户通过表单提交的文件,如图片、文档等。在这个主题下,我们需要理解...

    spring mvc 文件上传

    在Spring MVC框架中,文件上传是一项常见的功能,用于允许用户通过Web界面上传文件到服务器。在本篇博文中,我们将深入探讨如何实现这一功能,并基于`FileUploadController.java`这个类来讲解相关知识点。 首先,...

    精通Spring MVC 4

    本书共计10章,分别介绍了快速搭建Spring Web应用、精通MVC结构、URL映射、文件上传与错误处理、创建Restful应用、保护应用、单元测试与验收测试、优化请求、将Web应用部署到云等内容,循序渐进地讲解了Spring MVC4...

    spring mvc上传文件

    在本文中,我们将深入探讨如何使用Spring MVC框架与Ajax技术结合来实现文件上传的功能。Spring MVC是Spring框架的一部分,提供了一种模型-视图-控制器(MVC)架构模式,用于构建Web应用程序。Ajax(Asynchronous ...

    spring mvc uploadify上传文件

    在本文中,我们将深入探讨如何使用Spring MVC框架与uploadify插件进行文件上传,特别是针对图片的上传。Spring MVC是Spring框架的一部分,专门用于构建Web应用程序,而uploadify是一款前端JavaScript插件,使得用户...

    Spring mvc文件上传下载代码实例

    Spring MVC 文件上传下载代码实例 Spring MVC 文件上传下载代码实例中主要介绍了如何在 Spring MVC 框架中实现文件上传和下载的功能。下面是相关的知识点: 1. 文件上传的必要条件: 在 Spring MVC 中,文件上传...

    springMVC 文件上传jar文件及源码

    在深入学习Spring MVC文件上传和下载的过程中,理解HTTP协议、表单提交以及Spring MVC的内部工作原理是非常重要的。同时,熟悉相关的API和最佳实践,能够帮助我们构建健壮且安全的文件上传下载功能。

    spring mvc 上传文件显示进度

    在Spring MVC中实现文件上传并显示进度是一项常见的需求,特别是在用户需要等待较长时间的大型文件上传时。这个功能可以通过监听文件上传的进度并在前端实时更新来提升用户体验。下面将详细介绍如何利用Spring MVC...

    ssm框架--spring mvc实现文件上传

    在"ssm框架--spring mvc实现文件上传"这个项目中,我们将重点探讨如何在Spring MVC中实现实现文件上传的功能。 文件上传是Web应用中的常见需求,Spring MVC提供了便捷的API来处理这一任务。首先,你需要在表单中...

    spring MVC 上传 &下载

    #### 二、Spring MVC文件上传配置 为了使Spring MVC能够处理文件上传,首先需要在Spring MVC的配置文件中添加相应的配置。这里以`springmvc-servlet.xml`为例: 1. **引入必要的命名空间**:确保配置文件包含了`...

    spring mvc 附件上传代码

    本文档将详细介绍如何在Spring MVC环境中配置并实现文件上传功能,包括必要的`web.xml`配置、Spring配置文件(如`upload-servlet.xml`)设置及控制器的具体编写。 #### 二、`web.xml`配置详解 `web.xml`文件用于...

Global site tag (gtag.js) - Google Analytics