`

spring实现文件上传

阅读更多

Spring由内置的multipart支持web应用中的文件上传。multipart支持的设计是通过定义org.springframework.web.multipart包中的插件对象MultipartResovler来完成的。Spring提供MultipartResolver可以支持Commons FileUpload (http://jakarta.apache.org/commons/fileupload)和COS FileUpload (http://www.servlets.com/cos)。本章后面的部分描述了文件上传是如何支持的。

缺省,Spring是没有multipart处理,因为一些开发者想要自己处理它们。如果你想使用Spring的multipart,需要在web应用的上下文中添加multipart解析器。这样,每个请求就会被检查是否包含multipart。然而,如果请求中包含multipart,你的上下文中定义的MultipartResolver就会解析它。这样,你请求中的multipart属性就会象其它属性一样被处理。

使用MultipartResolver
下面的例子说明了如何使用CommonsMultipartResolver:

<bean id="multipartResolver"
    class="org.springframework.web.multipart.commons.CommonsMultipartResolver">

    <!-- one of the properties available; the maximum file size in bytes -->
    <property name="maximumFileSize">
        <value>100000</value>
    </property>
</bean>---------------------------------------------------------------------------------------------------下面这部分是我的配置文件部分------------------------------ <!-- 配置上传文件--> <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">  <property name="maxUploadSize">   <value>1000000</value>  </property> </bean>  <bean id="uploadControl" class="com.f9inux.controller.uploadController">  <property name="commandClass">   <value>com.f9inux.bean.uploadfilebean</value>  </property>  <property name="successView">   <value>index</value>  </property>  <property name="path">   <value>g:\web</value>  </property> </bean>  <!-- 配置上传文件-->-----------------上面由于我使用了springMVC如果有不明白的可以给我留言-----------------------------uploadController部分(类似于struts的action)-----------------package com.f9inux.controller;import java.io.BufferedOutputStream;import java.io.FileOutputStream;import javax.servlet.ServletRequest;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import org.springframework.validation.BindException;import org.springframework.web.bind.ServletRequestDataBinder;import org.springframework.web.multipart.support.ByteArrayMultipartFileEditor;import org.springframework.web.servlet.ModelAndView;import org.springframework.web.servlet.mvc.SimpleFormController;import com.f9inux.bean.uploadfilebean;public class uploadController extends SimpleFormController { protected String path;  public void setPath(String path) {  this.path = path; } public ModelAndView onSubmit(HttpServletRequest request,                        HttpServletResponse response,                        Object command,BindException errors)throws Exception{  uploadfilebean ub=(uploadfilebean)command;  //System.out.println(ub.getName());  //String sp=path+System.getProperty("file.separator")+ub.getName();  String sp=path+"\\"+ub.getName();  //System.out.println(sp);//输出存放目录  BufferedOutputStream bf=new BufferedOutputStream(new FileOutputStream(sp));  bf.write(ub.getContents());  bf.close();  return new ModelAndView(this.getSuccessView()); }  public void initBinder(HttpServletRequest request,                  ServletRequestDataBinder binder)throws Exception{  super.initBinder(request,binder);  binder.registerCustomEditor(    byte[].class,new ByteArrayMultipartFileEditor()); }}-----------------------上面主要实现的保存文件的逻辑---------------------------------------------uploadfilebean部分(这部分主要负责表单内容的承载,类似实体bean)--------package com.f9inux.bean;public class uploadfilebean { private String name;  private byte[] contents;  public byte[] getContents() {  return contents; } public String getName() {  return name; } public void setContents(byte[] contents) {  this.contents = contents; } public void setName(String name) {  this.name = name; }}------------------上面的属性和表单的控件相对应---------------------------------表单部分------------------- <form method="post" action="upload.do" enctype="multipart/form-data">            <input type="file" name="contents" onchange="getvalue()"/>            <input type="hidden" name="name"/>            <input type="submit"/> </form>关于enctype部分的解释:使用multipart,你需要创建一个带文件上传域的表单,让Spring将文件绑定到你的表单上------------------------------------------最后请在你的tomcat的command/lib目录中添加commons-io.jar、commons-fileupload.jar包~~!

 

 

 

 

 

 

 

web.xml片段:

  

  1. <servlet>  
  2.         <servlet-name>springServlet</servlet-name>  
  3.         <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>  
  4.         <load-on-startup>2</load-on-startup>  
  5.     </servlet>  
  6.     <servlet-mapping>  
  7.         <servlet-name>springServlet</servlet-name>  
  8.         <url-pattern>*.do</url-pattern>  
  9.     </servlet-mapping>  

 

 

servlet.xml片段:

 

  1. <bean id="multipartResolver"  
  2.            class="org.springframework.web.multipart.commons.CommonsMultipartResolver">  
  3.             <!-- 设置上传文件的最大尺寸为10MB -->  
  4.             <property name="maxUploadSize">  
  5.             <value>100010485761</value>  
  6.         </property>  
  7.     </bean>  

 

 

Controller:

 

  1. @RequestMapping(params = "method=upload")   
  2.     protected ModelAndView uploadFile(HttpServletRequest request)   
  3.             throws Exception {   
  4.         try{   
  5.             //cast to multipart file so we can get additional information   
  6.             MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;   
  7.             CommonsMultipartFile file = (CommonsMultipartFile) multipartRequest.getFile("file");   
  8.             System.out.println(">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>");   
  9.             byte[] bytes = file.getBytes();   
  10.             String uploadDir = "c:\\uploadFile";   
  11.             System.out.println(">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>" + uploadDir);   
  12.             File dirPath = new File(uploadDir);   
  13.             if (!dirPath.exists()) {   
  14.                 dirPath.mkdirs();   
  15.             }   
  16.             String sep = System.getProperty("file.separator");   
  17.             if (log.isDebugEnabled()) {   
  18.                 log.debug("uploading to: " + uploadDir + sep +   
  19.                 file.getOriginalFilename());   
  20.                 }   
  21.             File uploadedFile = new File(uploadDir + sep   
  22.                     + file.getOriginalFilename());   
  23.             FileCopyUtils.copy(bytes, uploadedFile);   
  24.             System.out.println("********************************");   
  25.             System.out.println(uploadedFile.getAbsolutePath());   
  26.             System.out.println(bytes.length);   
  27.             System.out.println("********************************");   
  28.         }catch(Exception e){   
  29.             e.printStackTrace();   
  30.         }   
  31.         return new ModelAndView("");   
  32.     }  

 

页面:

 

  1. <form method="post" action="collParam.do?method=upload" enctype="multipart/form-data">  
  2. <input type="file" name="file" id="file"/>  
  3. <input type="submit" value="save"/>  
  4. </form>  
分享到:
评论

相关推荐

    基于Spring实现文件上传功能

    基于Spring实现文件上传功能 一、文件上传概述 文件上传是web应用程序中的一种常见功能,允许用户上传文件到服务器端以供后续处理。 Spring框架提供了多种方式来实现文件上传,包括使用MultipartFile接口、使用...

    SPRING 实现文件上传

    只需改动一点点就可以实现所有格式的文件的上传

    spring实现文件上传下载

    Spring MVC提供了强大的支持来处理这些操作,使得开发者可以轻松地实现文件的上传和下载功能。下面将详细阐述如何利用Spring MVC来实现这两个功能。 一、文件上传 1. 配置MultipartResolver:Spring MVC默认使用...

    struts1 + hibernate + spring 实现文件上传

    在"struts1 + hibernate + spring 实现文件上传"的场景中,我们将讨论如何利用这些技术来实现用户端文件的上传功能。 **Struts1** 是一个基于MVC(Model-View-Controller)设计模式的Java Web框架,它简化了开发...

    Ajax配合Spring实现文件上传功能代码

    Ajax与Spring框架结合实现文件上传功能涉及到前端页面设计、JavaScript的Ajax调用、以及后端Spring处理上传文件等多个知识点。下面详细解读如何使用这两种技术实现图片文件的上传。 首先,前端页面的设计是文件上传...

    基于 Spring 实现文件上传的功能

    在本文中,我们将深入探讨如何使用Spring框架实现文件上传功能。Spring提供了强大的MVC模块,使得处理HTTP请求,包括文件上传变得非常简单。文件上传在Web应用中是常见的需求,例如用户可能需要上传图片、文档等。让...

    jersey+spring+srpingmvc实现上传

    【标题】:“jersey+spring+...通过这个示例,开发者可以了解到如何利用Java生态系统中的这些流行框架来实现文件上传功能,并为自己的项目提供参考。同时,理解并实践这些知识点,也有助于提升对Web开发的整体理解。

    spring mvc文件上传实现进度条

    在Spring MVC框架中,文件上传是一项常见的功能,而实现文件上传进度条则能提供更好的用户体验。这个场景通常涉及到前端的JavaScript或jQuery库(如jQuery File Upload)与后端的Spring MVC控制器之间的交互,以及...

    Spring实现文件上传功能

    总结,Spring实现文件上传功能主要包括创建Maven Web项目、设置表单、编写Controller处理文件上传请求。在实际开发中,还需要考虑文件的存储策略、安全性以及用户体验等多个方面,确保文件上传功能既稳定又安全。

    springcloud处理文件上传

    本话题主要探讨如何在Spring Cloud环境中处理文件上传,特别是在结合Feign和Zuul这两个组件时的实现方法。Feign是Spring Cloud的一个声明式HTTP客户端,用于简化服务间的调用;而Zuul则是作为API网关,提供路由、...

    Spring文件的上传和下载

    以上就是基于Spring实现文件上传和下载的基本流程和技术点。在实际开发中,还需要考虑错误处理、文件大小限制、安全验证等细节问题。在"onegis"这个压缩包中,可能包含了一个实际的Spring Web项目示例,你可以通过...

    Java Spring文件上传,Java文件上传,Java通用文件上传

    本文将深入探讨如何使用Java和Spring实现文件上传,以及相关的类和接口。 首先,我们需要了解`MultipartFile`接口。它是Spring MVC中用于处理多部分HTTP请求(即文件上传)的核心接口。通过这个接口,我们可以读取...

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

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

    SpringBoot实现文件上传和下载.docx

    总的来说,Spring Boot提供了一种简洁的方式来实现文件上传和下载功能,结合Thymeleaf和其他Spring组件,可以快速构建出功能完善的Web应用。通过合理的接口设计和实现,我们可以实现可扩展且易于维护的文件存储服务...

    Java Spring Boot应用程序中实现文件上传和下载功能

    ### Java Spring Boot应用程序中实现文件上传和下载功能 在现代Web开发中,文件上传与下载是常见的需求之一。Spring Boot框架提供了简洁的方式帮助开发者轻松实现这些功能。本文将详细介绍如何在Spring Boot项目中...

    Spring MVC实现文件的上传和下载

    通过以上步骤,你可以利用Spring MVC轻松实现文件的上传和下载功能。实际开发中,还需要结合具体需求,例如添加权限控制、进度条显示等。对于更复杂的场景,可能需要引入额外的库,如Apache Commons FileUpload,以...

    Spring MVC文件上传下载

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

    Java实现文件上传的两种方法(uploadify和Spring)

    以下是使用Spring实现文件上传的基本流程: 1. **配置Spring MVC**:在Spring的配置文件中,配置`CommonsMultipartResolver`为MultipartResolver,以便支持文件上传。 2. **创建表单**:在HTML页面中,创建一个`...

    Spring boot整合MinIO客户端实现文件管理

    MinIO 是一个基于Apache License v2.0开源协议的对象存储服务。它兼容亚马逊S3云存储服务接口,非常适合于存储大容量非结构化的数据,例如图片、视频、日志文件、备份数据和...Spring boot整合MinIO客户端实现文件管理

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

    这个压缩包文件"Spring MVC 文件上传下载 后端 - Java.zip"包含的文档可能详细阐述了如何在Java后端实现这些功能。以下是关于Spring MVC中文件上传和下载的关键知识点: 1. **Spring MVC 框架**:Spring MVC是...

Global site tag (gtag.js) - Google Analytics