SpringMVC上传文件的三种实现方式

SpringMVC上传文件的三种实现方式,直接上代码吧,大伙一看便知

前台:

<%@ page language="java" contentType="text/html; charset=utf-8"

  pageEncoding="utf-8"%>

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8">

<title>Insert title here</title>

</head>

<body>

<form name="serForm" action="/SpringMVC006/fileUpload" method="post" enctype="multipart/form-data">

<h1>采用流的方式上传文件</h1>

<input type="file" name="file">

<input type="submit" value="upload"/>

</form>

<form name="Form2" action="/SpringMVC006/fileUpload2" method="post" enctype="multipart/form-data">

<h1>采用multipart提供的file.transfer方法上传文件</h1>

<input type="file" name="file">

<input type="submit" value="upload"/>

</form>

<form name="Form2" action="/SpringMVC006/springUpload" method="post" enctype="multipart/form-data">

<h1>使用spring mvc提供的类的方法上传文件</h1>

<input type="file" name="file">

<input type="submit" value="upload"/>

</form>

</body>

</html>

配置:

<!-- 多部分文件上传 -->

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

   <property name="maxUploadSize" value="104857600" />

   <property name="maxInMemorySize" value="4096" />

   <property name="defaultEncoding" value="UTF-8"></property>

</bean>

后台:

方式一:

/*

   * 通过流的方式上传文件

   * @RequestParam("file") 将name=file控件得到的文件封装成CommonsMultipartFile 对象

   */

  @RequestMapping("fileUpload")

  public String fileUpload(@RequestParam("file") CommonsMultipartFile file) throws IOException {

    //用来检测程序运行时间

    long startTime=System.currentTimeMillis();

    System.out.println("fileName:"+file.getOriginalFilename());

    try {

      //获取输出流

      OutputStream os=new FileOutputStream("E:/"+new Date().getTime()+file.getOriginalFilename());

      //获取输入流 CommonsMultipartFile 中可以直接得到文件的流

      InputStream is=file.getInputStream();

      int temp;

      //一个一个字节的读取并写入

      while((temp=is.read())!=(-1))

      {

        os.write(temp);

      }

      os.flush();

      os.close();

      is.close();

    } catch (FileNotFoundException e) {

      // TODO Auto-generated catch block

      e.printStackTrace();

    }

    long endTime=System.currentTimeMillis();

    System.out.println("方法一的运行时间:"+String.valueOf(endTime-startTime)+"ms");

    return "/success"; 

  }

方式二:

/*

   * 采用file.Transto 来保存上传的文件

   */

  @RequestMapping("fileUpload2")

  public String fileUpload2(@RequestParam("file") CommonsMultipartFile file) throws IOException {

     long startTime=System.currentTimeMillis();

    System.out.println("fileName:"+file.getOriginalFilename());

    String path="E:/"+new Date().getTime()+file.getOriginalFilename();

    File newFile=new File(path);

    //通过CommonsMultipartFile的方法直接写文件(注意这个时候)

    file.transferTo(newFile);

    long endTime=System.currentTimeMillis();

    System.out.println("方法二的运行时间:"+String.valueOf(endTime-startTime)+"ms");

    return "/success"; 

  }

方式三:

/*

   *采用spring提供的上传文件的方法

   */

  @RequestMapping("springUpload")

  public String springUpload(HttpServletRequest request) throws IllegalStateException, IOException

  {

     long startTime=System.currentTimeMillis();

     //将当前上下文初始化给 CommonsMutipartResolver (多部分解析器)

    CommonsMultipartResolver multipartResolver=new CommonsMultipartResolver(

        request.getSession().getServletContext());

    //检查form中是否有enctype="multipart/form-data"

    if(multipartResolver.isMultipart(request))

    {

      //将request变成多部分request

      MultipartHttpServletRequest multiRequest=(MultipartHttpServletRequest)request;

      //获取multiRequest 中所有的文件名

      Iterator iter=multiRequest.getFileNames();

      while(iter.hasNext())

      {

        //一次遍历所有文件

        MultipartFile file=multiRequest.getFile(iter.next().toString());

        if(file!=null)

        {

          String path="E:/springUpload"+file.getOriginalFilename();

          //上传

          file.transferTo(new File(path));

        }

      }

    }

    long endTime=System.currentTimeMillis();

    System.out.println("方法三的运行时间:"+String.valueOf(endTime-startTime)+"ms");

  return "/success"; 

  }

我们看看测试上传的时间:

第一次我用一个4M的文件:

fileName:test.rar

方法一的运行时间:14712ms

fileName:test.rar

方法二的运行时间:5ms

方法三的运行时间:4ms

第二次:我用一个50M的文件

方式一进度很慢,估计得要个5分钟

方法二的运行时间:67ms

方法三的运行时间:80ms

从测试结果我们可以看到:用springMVC自带的上传文件的方法要快的多!

对于测试二的结果:可能是方法三得挨个搜索,所以要慢点。不过一般情况下我们是方法三,因为他能提供给我们更多的方法

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • Spring MVC 文件上传的示例代码

    一如既往记录下常用而又容易忘记的东西,本篇博文主要针对Spring MVC是如何上传文件的.以下记录两种上传方法并针对案例进行记录.(有关spring mvc其他配置省略) 1.使用Spring MVC 上传文件必须配置文件解析器,如下: <!-- 上传文件拦截,设置最大上传文件大小 10M=10*1024*1024(B)=10485760 bytes --> <bean id="multipartResolver" class="org.springfra

  • SpringMVC文件上传的配置实例详解

    记述一下步骤以备查. 准备工作: 需要把Jakarta Commons FileUpload及Jakarta Commons io的包放lib里. 我这边的包是: commons-fileupload-1.1.1.jar commons-io-1.3.2.jar 然后在spring-servlet.xml进行multipartResolver配置,不配置好上传会不好用. <bean id="multipartResolver" class="org.springfram

  • springMVC配置环境实现文件上传和下载

    最近的项目中用到了文件的上传和下载功能,我觉着这个功能比较重要,因此特意把它提取出来自己进行了尝试. 下面就是springMVC配置环境实现文件上传和下载的具体步骤,供大家参考,具体内容如下 一. 基础配置: maven导包及配置pom.xml,导包时除开springmvc的基础依赖外,需要导入文件上传下载时用到的commons-io.jsr和commons-fileupload.jar: <project xmlns="http://maven.apache.org/POM/4.0.0&

  • spring mvc实现文件上传并携带其他参数的示例

    这是主要使用到的jar 文件是:spring mvc +apache common-fileuplad 第一步:web.xml 文件.[重点是spring mvc的拦截器和相关监听器] <?xml version="1.0" encoding="UTF-8"?> <web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi

  • Spring MVC中上传文件实例

    SpringMVC(注解)上传文件需要注意的几个地方: 1.form的enctype="multipart/form-data",这个是上传文件必须的 2.applicationContext.xml配置: 复制代码 代码如下: <!-- SpringMVC上传文件时,需要配置MultipartResolver处理器 --> <bean id="multipartResolver" class="org.springframework.w

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

    必须明确告诉DispatcherServlet如何处理MultipartRequest.SpringMVC中提供了文件上传使用方式如下配置xxx-servlet.xml,添加如下代码: 复制代码 代码如下: <bean id="multipartResolver"  class="org.springframework.web.multipart.commons.CommonsMultipartResolver">          <!-- 设置

  • springMVC结合AjaxForm上传文件

    最近在项目中需要上传文件文件,之前一直都是form提交的,尝试了一下AjaxForm,感觉还比较好用,写篇随笔mark下,供以后使用. 准备工作: 下载jquery-form.js 相关jar: commons-fileupload-1.1.1.jar commons-io-1.3.2.jar 在spring-servlet.xml进行multipartResolver配置: <bean id="multipartResolver" class="org.springf

  • 在SpringMVC框架下实现文件的上传和下载示例

    在eclipse中的javaEE环境下:导入必要的架包 web.xml的配置文件: <?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation=&

  • springMVC实现前台带进度条文件上传的示例代码

    项目框架采用spring+hibernate+springMVC如果上传文件不想使用flash那么你可以采用HTML5;截图前段模块是bootstarp框架;不废话直接来代码;spring-mvc配置文件;效果截图如下: 详细实现如下: 1.mvc-config.xml <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/s

  • SpringMVC上传文件的三种实现方式

    SpringMVC上传文件的三种实现方式,直接上代码吧,大伙一看便知 前台: <%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.

  • django上传文件的三种方式

    Django文件上传需要考虑的重要事项 文件或图片一般通过表单进行.用户在前端点击文件上传,然后以POST方式将数据和文件提交到服务器.服务器在接收到POST请求后需要将其存储在服务器上的某个地方.Django默认的存储地址是相对于根目录的/media/文件夹,存储的默认文件名就是文件本来的名字.上传的文件如果不大于2.5MB,会先存入服务器内存中,然后再写入磁盘.如果上传的文件很大,Django会把文件先存入临时文件,再写入磁盘. Django默认处理方式会出现一个问题,所有文件都存储在一个文

  • SpringMVC上传文件的两种方法

    在该示例中,阐述了SpringMVC如何上传文件. 1.上传页面upload.jsp <body> <form action="/TestSpringMVC3/data/uploadfile" enctype="multipart/form-data" method="post"> file:<input type="file" name="file"><br>

  • 简述Java异步上传文件的三种方式

    本文为大家分享了三种Java异步上传文件方式,供大家参考,具体内容如下 用第三方控件,如Flash,ActiveX等浏览器插件上传. 使用隐藏的iframe模拟异步上传. 使用XMLHttpRequest2来实现异步上传. 第一种使用浏览器插件上传,需要一定的底层编码功底,在这里我就不讲了,以免误人子弟,提出这点大家可以自行百度. 第二种使用隐藏的iframe模拟异步上传.为什么在这里说的是模拟呢?因为我们其实是将返回结果放在了一个隐藏的iframe中,所以才没有使当前页面跳转,感觉就像是异步操

  • Java中实现文件上传下载的三种解决方案(推荐)

    java文件上传与文件下载是程序开发中比较常见的功能,下面通过本文给大家介绍Java中实现文件上传下载的三种解决方案,具体详情如下所示: 第一点:Java代码实现文件上传 FormFile file=manform.getFile(); String newfileName = null; String newpathname=null; String fileAddre="/numUp"; try { InputStream stream = file.getInputStream(

  • SpringMVC上传文件FileUpload使用方法详解

    本文实例为大家分享了SpringMVC上传文件FileUpload的具体代码,供大家参考,具体内容如下 我是在已经搭建好的springMVC环境下,maven工程中的pom.xml所需要的jar包(其中spring上传文件的两个主要jar:commons-fileupload.jar和commons-io.jar): <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.o

  • SpringMVC上传文件的简单实例

    SpringMVC上传文件的简单实例 在使用springMVC进行系统实现时,springMVC默认的解析器里面是没有加入对文件上传的解析的,这可以方便我们实现自己的文件上传.但如果你想使用springMVC对文件上传的解析器来处理文件上传的时候就需要在spring的applicationContext里面加上springMVC提供的MultipartResolver的申明.这样之后,客户端每次进行请求的时候,springMVC都会检查request里面是否包含多媒体信息,如果包含了就会使用Mu

  • SpringMVC上传文件并保存到本地代码实例

    这篇文章主要介绍了SpringMVC上传文件并保存到本地代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 基本的MVC配置就不展示了,这里给出核心代码 在spring-mvc的配置文件中写入如下配置 <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"

  • SpringMVC 上传文件 MultipartFile 转为 File的方法

    在使用 SpringMVC 上传文件时,接收到的文件格式为 MultipartFile,但是在很多场景下使用都需要File格式的文件,记录下以便日后使用. 以下mFile为MultipartFile文件 此方法会在本地产生临时文件,使用完毕需要删除 在网上搜索未发现可直接使用的不产生临时文件的方法,查到几个本地测试皆无法通过,如哪位有不产生临时文件的方法,请多多指教

  • Python中Selenium上传文件的几种方式

    目录 1. input 元素上传文件 2. input 元素隐藏 3. 文件选择对话框 4. 使用 pywinauto 上传文件 5. pyautogui 6. 并发问题 Selenium 封装了现成的文件上传操作.但是随着现代前端框架的发展,文件上传的方式越来越多样.而有一些文件上传的控件,要做自动化控制会更复杂一些,这篇文章主要讨论在复杂情况下,如何通过自动化完成文件上传. 1. input 元素上传文件 如果页面需要文件上传,那么在大多数情况下,都能在页面源代码中找到一个input的元素.

随机推荐