`
hbcui1984
  • 浏览: 149786 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

利用MultipartFile实现文件上传

阅读更多

利用MultipartFile实现文件上传

         在java中上传文件似乎总有点麻烦,没.net那么简单,记得最开始的时候用smartUpload实现文件上传,最近在工作中使用spring的MultipartFile实现文件上传,感觉挺简单,在这里和大家分享一下.

一.主要有两个java类,和一般的servlet放在一起即可.

1.FileUploadBean.java

java 代码
  1. package chb.demo.web;   
  2.   
  3. import org.springframework.web.multipart.MultipartFile;   
  4.   
  5. /**  
  6.  * @author chb  
  7.  *  
  8.  */  
  9. public class FileUploadBean {   
  10.   
  11.     private MultipartFile file;   
  12.   
  13.     public void setFile(MultipartFile file) {   
  14.         this.file = file;   
  15.     }   
  16.   
  17.     public MultipartFile getFile() {   
  18.         return file;   
  19.     }   
  20. }  

2.FileUploadController.java

java 代码
  1. package chb.demo.web;   
  2.   
  3. import java.io.FileOutputStream;   
  4. import java.io.IOException;   
  5. import java.io.InputStream;   
  6.   
  7. import javax.servlet.http.HttpServletRequest;   
  8. import javax.servlet.http.HttpServletResponse;   
  9.   
  10. import org.springframework.validation.BindException;   
  11. import org.springframework.web.multipart.MultipartFile;   
  12. import org.springframework.web.servlet.ModelAndView;   
  13. import org.springframework.web.servlet.mvc.SimpleFormController;   
  14.   
  15.   
  16. /**  
  17.  * @author chb  
  18.  *  
  19.  */  
  20. public class FileUploadController extends SimpleFormController {   
  21.            
  22.     protected ModelAndView onSubmit(   
  23.         HttpServletRequest request,   
  24.         HttpServletResponse response,   
  25.         Object command,   
  26.         BindException errors){   
  27.            
  28.         try  
  29.         {   
  30.             // cast the bean   
  31.             FileUploadBean bean = (FileUploadBean) command;   
  32.   
  33.             // let's see if there's content there   
  34.             MultipartFile file = bean.getFile();   
  35.                                   
  36.             if (file == null) {   
  37.                 throw new Exception("上传失败:文件为�空");     
  38.             }   
  39.             if(file.getSize()>10000000)        
  40.             {   
  41.                 throw new Exception("上传失败:文件大小不能超过10M");               
  42.             }   
  43.             //得到文件�名   
  44.             String filename=file.getOriginalFilename();           
  45.                
  46.             if(file.getSize()>0){                  
  47.                 try {   
  48.                     SaveFileFromInputStream(file.getInputStream(),"D:/",filename);   
  49.                 } catch (IOException e) {   
  50.                     System.out.println(e.getMessage());   
  51.                     return null;   
  52.                 }   
  53.             }   
  54.             else{   
  55.                 throw new Exception("上传失败:上传文件不能为�空");   
  56.             }   
  57.             // well, let's do nothing with the bean for now and return:   
  58.             try {   
  59.                 return super.onSubmit(request, response, command, errors);   
  60.                    
  61.             } catch (Exception e) {   
  62.                 System.out.println(e.getMessage());   
  63.                 return null;   
  64.             }   
  65.         }   
  66.         catch(Exception ex)   
  67.         {   
  68.             System.out.println(ex.getMessage());   
  69.             return null;   
  70.         }   
  71.     }      
  72.        
  73.     /**保存文件  
  74.      * @param stream  
  75.      * @param path  
  76.      * @param filename  
  77.      * @throws IOException  
  78.      */  
  79.     public void SaveFileFromInputStream(InputStream stream,String path,String filename) throws IOException   
  80.     {         
  81.         FileOutputStream fs=new FileOutputStream( path + "/"+ filename);   
  82.         byte[] buffer =new byte[1024*1024];   
  83.         int bytesum = 0;   
  84.         int byteread = 0;    
  85.         while ((byteread=stream.read(buffer))!=-1)   
  86.         {   
  87.            bytesum+=byteread;   
  88.            fs.write(buffer,0,byteread);   
  89.            fs.flush();   
  90.         }    
  91.         fs.close();   
  92.         stream.close();         
  93.     }         
  94. }   
  95.   

二.配置文件中如下配置:

1.web.xml,利用spring mvc模式,大家应该都很熟悉了

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

2.chb-servlet.xml,这里要配置映射,并可以设定最大可上传文件的大小

xml 代码
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">  
  3. <beans>  
  4.     <!-- Multi-Action 用来标识method的变量名定义-->  
  5.     <bean id="methodNameResolver" class="org.springframework.web.servlet.mvc.multiaction.ParameterMethodNameResolver">  
  6.         <property name="paramName">  
  7.             <value>action</value>  
  8.         </property>  
  9.         <property name="defaultMethodName">  
  10.             <value>index</value>  
  11.         </property>  
  12.     </bean>  
  13.        
  14.     <bean id="multipartResolver"  class="org.springframework.web.multipart.commons.CommonsMultipartResolver">  
  15.         <!-- one of the properties available; the maximum file size in bytes -->  
  16.         <property name="maxUploadSize" value="10000000"/>  
  17.     </bean>  
  18.        
  19.   
  20.     <bean id="handlerMapping" class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">  
  21.         <property name="mappings">  
  22.           <props>  
  23.             <prop key="/upload.do">fileUploadController</prop>  
  24.           </props>  
  25.         </property>  
  26.     </bean>  
  27.        
  28.     <bean id="fileUploadController" class="chb.demo.web.FileUploadController">  
  29.         <property name="commandClass" value="chb.demo.web.FileUploadBean"/>  
  30.         <!-- 上传失败时跳转页面 -->  
  31.         <property name="formView" value="/user/err.jsp"/>  
  32.         <!-- 上传成功时跳转页面 -->  
  33.         <property name="successView" value="/user/confirmation.jsp"/>  
  34.    </bean>  
  35. </beans>  

三.设定jsp页面

xml 代码
  1.  <form id="form1" method="post" action="upload.do" enctype="multipart/form-data">                  
  2.     <tr>  
  3.         <td width="25%" align="right">上传文件:</td>  
  4.         <td><input id="file" type="file" NAME="file" style="width:300px;"></td>  
  5.     </tr>  
  6.     <tr align="center" valign="middle">  
  7.         <td height="60" colspan="2"><input type="submit" ID="BtnOK" value="确认上传"></td>  
  8.     </tr>  
  9. </form>   
         ok,现在就可以上传文件了,挺简单吧?这里我只列出了基本步骤,至于具体的操作(比如中文问题)可能就需要大家自己再完善完善了.
分享到:
评论
1 楼 杨浩晨 2013-01-16  

感谢楼主分享,正好使用上。

相关推荐

    利用MultipartFile实现文件上传功能

    "利用MultipartFile实现文件上传功能详解" 在Java Web开发中,文件上传是一个常见的需求,而MultipartFile是Spring框架中一个非常强大的工具,用于处理文件上传。本文将详细介绍如何使用MultipartFile实现文件上传...

    多文件上传MultipartFile

    总结来说,`MultipartFile`是Spring框架处理多文件上传的核心工具,结合前端的文件选择和`webuploader`等库可以实现断点续传功能,提升用户体验。在后台处理文件时,通常需要先执行数据库操作,确保数据一致性,然后...

    Java利用MultipartFile实现上传多份文件的代码

    Java 利用 MultipartFile 实现上传多份文件的代码 Java 中实现上传多份文件的代码是非常实用的技术,以下是关于 MultipartFile ...我们可以通过 MultipartFile 实现上传多份文件,并使用其提供的方法来处理文件上传。

    File 转 MultipartFile 和MultipartFile的maven配置

    然而,在实际操作中,我们可能需要将已有的`File`对象转换为`MultipartFile`,以便利用Spring MVC的文件上传功能。下面将详细介绍如何实现`File`到`MultipartFile`的转换以及相关的Maven配置。 ### 1. `File`转`...

    okhttp多文件上传

    本知识点将详细介绍如何利用OkHttp实现多文件上传,并结合服务器端代码来理解整个流程。 一、OkHttp简介 OkHttp是由Square公司开发的一个HTTP客户端库,它提供了一个简单、高效且强大的接口来处理网络请求。OkHttp...

    基于nio实现的多文件上传源码

    本主题“基于nio实现的多文件上传源码”探讨的是如何利用Java NIO来实现高效的多文件上传功能,尤其对于小文件数量较大的情况。 首先,理解NIO的基本概念是必要的。NIO中的“非阻塞”意味着当数据不可用时,读写...

    SpringBoot 实现文件上传到本地目录 并返回可访问的文件地址.rar

    本项目的核心是利用Spring Boot的MVC特性来处理文件上传请求,以及构建一个安全、可靠且易于访问的文件服务。下面我们将详细探讨这个过程中的关键知识点。 1. **Spring Boot MVC**: Spring Boot MVC是Spring框架...

    java springboot 切割分片上传大文件

    在Java SpringBoot框架中,处理大文件上传是一个常见的需求,特别是在大数据时代,用户可能需要上传GB级别的文件。传统的单次上传方式可能会面临超时、内存溢出等问题,因此,采用切割分片上传的方式能有效解决这些...

    servlet实现文件上传功能

    在本篇讨论中,我们将深入探讨如何利用Servlet实现文件上传功能,以及在这个过程中涉及的关键知识点。 首先,我们需要了解HTTP协议。HTTP协议是无状态的,这意味着每次请求都是独立的。因此,在客户端(通常是...

    Labview FTP上传文件

    Labview FTP上传文件是利用Labview(Laboratory Virtual Instrument Engineering Workbench)这一强大的图形化编程环境,通过FTP(File Transfer Protocol)协议实现文件的远程传输。FTP是一种标准网络协议,用于在...

    实现各种类型文件的多文件上传

    前端利用layui的upload组件提供友好的用户界面,后端借助SpringBoot的`MultipartFile`处理文件上传逻辑,两者协同工作,实现各种类型文件的多文件上传。这种技术方案在实际的Web应用开发中具有广泛的应用价值。

    SpringBoot(31) 整合MinIO实现文件上传与下载

    4. **定义服务接口**:创建一个服务接口,包含文件上传和下载的方法。例如: ```java public interface FileStorageService { void uploadFile(MultipartFile file); Resource downloadFile(String fileName); ...

    java使用uploadify插件实现多文件上传完整demo

    总之,利用Uploadify插件,结合Java后端处理,可以轻松实现多文件上传、进度显示和取消上传等功能。这个完整的demo项目提供了一个可以直接使用的模板,对于有文件上传需求的开发者来说,是一个很好的起点。

    springboot-layui调用文件服务器接口实现文件上传下载.docx

    - `@PostMapping("/upload")` 方法接收一个`MultipartFile`类型的参数`file`,这是Spring MVC处理文件上传的核心类。首先,我们定义一个外部文件服务器的上传接口URL,然后使用`RestTemplate`来调用这个接口。 - ...

    使用io实现文件上传

    标题“使用io实现文件上传”指的是利用Java的I/O机制处理客户端上传的文件数据。 首先,我们需要了解Java I/O流的基本概念。I/O流是Java提供的处理输入和输出数据的一种机制,分为字节流和字符流两大类。字节流处理...

    SpringMVC文件上传,多文件上传实例

    在这个“SpringMVC文件上传,多文件上传实例”中,我们将深入探讨如何在SpringMVC环境中实现文件上传功能,包括单个文件上传以及多个文件的批量上传。 1. **文件上传原理**: 文件上传是通过HTTP协议的POST请求来...

    android 文件上传(多个或单个),图片上传

    总结,Android的文件上传涉及文件选择、读取、压缩、转换为流,以及利用Multipart请求将数据发送到服务器。同时,配合JSON数据可以传递更多的业务信息。理解并熟练运用这些技术,能够帮助开发者实现高效且稳定的文件...

    springboot 实现超大文件上传实例

    2. **MultipartFile处理**:SpringBoot提供了`MultipartFile`接口,用于处理文件上传。它封装了文件内容、原始文件名、文件类型等信息,便于在服务器端进行操作。 3. **配置文件上传限制**:在SpringBoot中,可以...

    vue+springboot 大文件上传

    在大文件上传方面,SpringBoot 提供了支持文件上传的API,我们可以利用这些API来处理文件接收和存储。 ### 分片上传 大文件分片上传是一种优化策略,通过将大文件拆分为多个小块(片段)进行上传,然后在服务器端...

    JavaEE企业级开发-----SpringMVC实现 文件的上传下载实验报告.docx

    本实验报告将详细阐述如何利用SpringMVC实现文件上传与下载的功能。 首先,文件上传的核心在于HTML表单(form)的正确配置。在创建用于上传文件的表单时,需要指定`enctype`属性为`multipart/form-data`。这是因为...

Global site tag (gtag.js) - Google Analytics