`

spring fileupload

阅读更多

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>  
<%@ 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 'multipartFileUpload.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 multipartFileUpload page. <br>
    <form method="POST" action="toFileUpload/multipartFileUpload" enctype="multipart/form-data">
		<input type="text" name="name"/><br>
		<input type="file" name="file"/><br>
		<input type="file" name="file"/><br>
		<input type="submit"/><br>
	</form>
  </body>
</html>
 
分享到:
评论

相关推荐

    cos spring fileupload

    标题 "cos spring fileupload" 涉及到的是在Spring框架中使用腾讯云对象存储(COS)进行文件上传的功能。这一主题涵盖了Spring MVC的扩展和COS客户端库的使用,以便实现高效的文件上传服务。 首先,让我们了解一下...

    hassian+spring +fileupload

    在这个例子中,我们关注的是如何结合Hessian和Spring框架来实现文件上传。Hessian是一种高效的RPC(远程过程调用)协议,它能够提供轻量级的、跨语言的服务调用,而Spring则是一个广泛使用的Java企业级应用开发框架...

    commons-fileupload及源码

    7. **与其他库的集成**:Apache Commons FileUpload可与Servlet API、Spring MVC、Struts等Web框架无缝集成,简化了在这些框架中实现文件上传的复杂性。 源码分析对于理解其内部工作原理非常有帮助。`commons-...

    一个简单的使用commons-fileupload包上传文件的例子

    在生产环境中,还应考虑使用更安全的方式处理文件上传,如使用Spring MVC或类似框架的文件上传支持。 总的来说,`commons-fileupload`和`commons-io`为Java Web开发者提供了方便、灵活的文件上传解决方案。通过学习...

    springmvc上传io和fileupload jar包

    Spring自带了一个基于Commons FileUpload的实现,即`CommonsMultipartResolver`。我们需要在Spring的配置文件中启用这个解析器,并设置一些参数,比如最大文件大小和临时目录路径。这样,Spring MVC就能识别并处理...

    commons-fileupload-1.3.2.jar

    - Spring MVC: 在Spring MVC应用中,可以与`CommonsMultipartResolver`结合,自动处理文件上传。 - Struts 2: 对于基于Struts 2的应用,可以通过配置`struts.multipart.parser`属性为`jakarta`来启用Apache ...

    commons-fileupload-1.3.1.jar

    在实际应用中,结合Servlet或Spring MVC等框架,可以轻松地集成Apache Commons FileUpload,处理用户的文件上传请求,从而构建安全、可靠的文件上传功能。同时,这个库也支持自定义策略,如文件存储路径、临时文件...

    fileupload使用方法demo

    创建一个Servlet或Spring MVC的Controller,用来接收文件上传请求。在这个"fileupload使用方法demo"中,你可能会看到一个名为`FileUploadServlet`的类,它扩展了`HttpServlet`。 3. **配置Servlet**: 在web.xml...

    commons-fileupload-1.2.2-bin.zip

    7. **与Struts、Spring等框架的整合**:Commons FileUpload库可以轻松与主流的Java Web框架集成,如Struts、Spring MVC等,使得文件上传功能的实现更加便捷。 总的来说,Apache Commons FileUpload库是Java开发人员...

    commons fileupload

    Commons FileUpload是Apache组织提供的一款强大的Java文件上传处理组件,常用于Web应用中处理用户通过表单上传的文件。在Web开发中,尤其是在涉及到用户上传照片、文档等大文件时,FileUpload组件提供了方便、高效的...

    java_分段上传_断点续传_超大附件上传spring-fileupload-plupload-mysql

    一个可以运行的项目,关于大附件上传这块的关键技术,在mysql中创建 upload 数据库,导入sql文件...后端导了fileupload的jar包 前端用了plupload的js插件 没有加mybatis和spring更具需要自己加 如果满意可以请评论点赞

    FileUpload所需的两个jar包

    为了实现这个功能,开发者通常会依赖于特定的库,而"FileUpload所需的两个jar包"正是针对这一需求的关键组件。这两个jar包是"commons-fileupload-1.2.1.jar"和"commons-io-1.3.2.jar",它们来自Apache Commons项目,...

    spring-aop-2.5.6.jar,jfreechart-1.0.13.jar,commons-fileupload.jar,

    在给定的压缩包"commons总包+spring总包+常用包.rar"中,包含了多个重要的Java库,这些库在IT行业中广泛应用于开发各种应用程序,尤其是Web应用。下面将详细阐述其中包含的主要组件及其功能: 1. **Spring AOP ...

    fileupload.zip

    综上所述,"fileupload.zip"可能包含了如何在Spring MVC中实现文件上传的代码实例,包括配置、控制器方法、文件处理和错误处理等。通过这个压缩包,你可以学习并实践如何在实际项目中实现文件上传功能。

    commons-fileupload上传组件

    7. **与其他组件集成**:FileUpload常与Spring MVC、Struts等框架集成,处理文件上传请求。通过了解其工作原理,开发者可以更好地调试和优化与这些框架的交互。 总的来说,Apache Commons FileUpload是处理HTTP文件...

    fileupload jar包

    "fileupload jar包"是Java Web开发中常用的一个组件,主要用于处理HTTP请求中的文件上传功能。...在实际开发中,通常会结合其他框架,如Spring MVC,将`fileupload`整合进更高级别的文件上传处理逻辑中。

    commons-fileupload使用例子

    创建一个Servlet或Spring MVC Controller来接收文件上传请求。这里以Servlet为例: ```java import org.apache.commons.fileupload.FileItem; import org.apache.commons.fileupload.FileUploadBase....

    commons-fileupload相关架包

    在实际使用中,开发者通常会结合Servlet或者Spring MVC等Web框架来调用Commons FileUpload。在Servlet中,你需要创建一个`ServletFileUpload`实例并配置相关参数,然后调用`parseRequest`方法来解析请求。对于每个...

    关于Spring MVC项目(maven)中通过fileupload上传文件

    在本场景中,我们关注的是使用Maven构建的Spring MVC项目,并涉及到`commons-fileupload`和`commons-io`这两个库,它们是Java中处理文件上传的核心工具。以下是关于这个主题的详细知识点: 1. **Spring MVC**: ...

Global site tag (gtag.js) - Google Analytics