最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

SpringMVC上傳文件FileUpload使用方法詳解

 更新時(shí)間:2017年11月20日 14:28:47   作者:http://blog.csdn.net/hundan_520520/article/details/54880319  
這篇文章主要為大家詳細(xì)介紹了SpringMVC上傳文件FileUpload的使用方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

本文實(shí)例為大家分享了SpringMVC上傳文件FileUpload的具體代碼,供大家參考,具體內(nèi)容如下

我是在已經(jīng)搭建好的springMVC環(huán)境下,maven工程中的pom.xml所需要的jar包(其中spring上傳文件的兩個(gè)主要jar:commons-fileupload.jar和commons-io.jar):

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.zhihua</groupId>
  <artifactId>SpringMVC_FileUpload</artifactId>
  <packaging>war</packaging>
  <version>0.0.1-SNAPSHOT</version>
  <name>SpringMVC_FileUpload Maven Webapp</name>
  <url>http://maven.apache.org</url>
  <properties>
    <!-- spring版本號(hào) -->
    <spring.version>3.2.8.RELEASE</spring.version>
    <!-- junit版本號(hào) -->
    <junit.version>4.10</junit.version>
  </properties>
  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>3.8.1</version>
      <scope>test</scope>
    </dependency>
    <!-- springMVC上傳文件依賴(lài) -->
    <dependency>
      <groupId>commons-fileupload</groupId>
      <artifactId>commons-fileupload</artifactId>
      <version>1.3.1</version>
    </dependency>
    <!-- 添加Spring依賴(lài) -->
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-core</artifactId>
      <version>${spring.version}</version>
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-webmvc</artifactId>
      <version>${spring.version}</version>
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-context</artifactId>
      <version>${spring.version}</version>
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-context-support</artifactId>
      <version>${spring.version}</version>
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-aop</artifactId>
      <version>${spring.version}</version>
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-aspects</artifactId>
      <version>${spring.version}</version>
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-tx</artifactId>
      <version>${spring.version}</version>
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-jdbc</artifactId>
      <version>${spring.version}</version>
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-web</artifactId>
      <version>${spring.version}</version>
    </dependency>
    <!--spring單元測(cè)試依賴(lài) -->
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-test</artifactId>
      <version>${spring.version}</version>
      <scope>test</scope>
    </dependency>
    <!-- jstl標(biāo)簽支持 -->
    <dependency>
      <groupId>jstl</groupId>
      <artifactId>jstl</artifactId>
      <version>1.2</version>
    </dependency>
    <!-- Servlet核心包 -->
    <dependency>
      <groupId>javax.servlet</groupId>
      <artifactId>javax.servlet-api</artifactId>
      <version>3.0.1</version>
      <scope>provided</scope>
    </dependency>
    <!--JSP -->
    <dependency>
      <groupId>javax.servlet.jsp</groupId>
      <artifactId>jsp-api</artifactId>
      <version>2.1</version>
      <scope>provided</scope>
    </dependency>
  </dependencies>
  <build>
    <finalName>SpringMVC_FileUpload</finalName>
  </build>
</project>

在spring-mvc.xml中添加代碼:

<!-- springMVC上傳文件時(shí),需要配置MultipartResolver處理器 -->
  <bean id="multipartResolver" 
    class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
    <property name="defaultEncoding" value="utf-8"></property>
    <property name="maxUploadSize" value="10485760000"></property>
    <property name="maxInMemorySize" value="40960"></property>
  </bean>

前端頁(yè)面(fileUpload.jsp)和上傳成功返回頁(yè)面(success.jsp):

<%@ page language="java" contentType="text/html; charset=UTF-8"
  pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!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>springmvc-文件上傳</title>
</head>
<body>
  <h1>采用流的方式上傳文件</h1>
  <form name="form1" action="<c:url value='/fileUpload/upload_01'/>" method="post" enctype="multipart/form-data">
    <input type="file" name="file_01"/>
    <input type="submit" value="fileupload"/>
  </form>
  <br>
  <h1>采用multipart提供的file.transfer方法上傳文件1</h1>
  <form name="form2" action="<c:url value='/fileUpload/upload_02'/>" method="post" enctype="multipart/form-data">
    <input type="file" name="file_02"/>
    <input type="submit" value="fileupload"/>
  </form>
  <br>
  <h1>采用multipart提供的file.transfer方法上傳文件2</h1>
  <form name="form2" action="<c:url value='/fileUpload/upload_03'/>" method="post" enctype="multipart/form-data">
    <input type="file" name="file_03"/>
    <input type="submit" value="fileupload"/>
  </form>
  <br>
  <h1>使用spring MVC提供的方法上傳文件</h1>
  <form name="form2" action="<c:url value='/fileUpload/upload_spring'/>" method="post" enctype="multipart/form-data">
    <input type="file" name="file_03"/>
    <input type="submit" value="fileupload"/>
  </form>
</body>
</html>

<%@ 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>
  <h2>文件上傳成功!</h2>
</body>
</html>

controller 的代碼:

package com.zhihua.controller;

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.Date;
import java.util.Iterator;

import javax.servlet.http.HttpServletRequest;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.multipart.MultipartHttpServletRequest;
import org.springframework.web.multipart.commons.CommonsMultipartFile;
import org.springframework.web.multipart.commons.CommonsMultipartResolver;

@Controller
@RequestMapping("/fileUpload")
public class FileUploadController {

  /**
   * 通過(guò)流的方式上傳文件
   * @RequestParam("file") 將name=file控件得到的文件封裝成CommonsMultipartFile 對(duì)象
   * <請(qǐng)?zhí)鎿Q成功能描述> <br>
   * <請(qǐng)?zhí)鎿Q成詳細(xì)描述>
   * @param file
   * @return
   * @author caizh
   * @since [1.0.0]
   * @version [1.0.0,2017年2月5日]
   */
  @RequestMapping("/upload_01")  
  public String fileUpload_1(@RequestParam("file_01")CommonsMultipartFile file)throws IOException {
    //用來(lái)檢測(cè)程序運(yùn)行時(shí)間
    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;
      //一個(gè)一個(gè)字節(jié)的讀取并寫(xiě)入
      while((temp=is.read())!=(-1)){
        os.write(temp);
      }
      os.flush();
      os.close();
      is.close();
    }catch(Exception e){
      e.printStackTrace();
    }
    long endTime = System.currentTimeMillis();
    System.out.println("方法一的運(yùn)行時(shí)間:"+String.valueOf(endTime-startTime)+"ms");
    return "view/success";
  }

  /**
   * 采用file.Transto 來(lái)保存上傳的文件
   * <請(qǐng)?zhí)鎿Q成功能描述> <br>
   * <請(qǐng)?zhí)鎿Q成詳細(xì)描述>
   * @param file
   * @return
   * @throws IOException
   * @author caizh
   * @since [1.0.0]
   * @version [1.0.0,2017年2月5日]
   */
  @RequestMapping("/upload_02")
  public String fileUpload_2(@RequestParam("file_02") 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);
    //通過(guò)CommonsMultipartFile 的方法直接寫(xiě)文件
    file.transferTo(newFile);
    long endTime = System.currentTimeMillis();
    System.out.println("方法二的運(yùn)行時(shí)間:"+String.valueOf(endTime-startTime)+"ms");
    return "view/success";    
  }

  /**
   * 使用MultipartFile上傳文件
   * <請(qǐng)?zhí)鎿Q成功能描述> <br>
   * <請(qǐng)?zhí)鎿Q成詳細(xì)描述>
   * @param file
   * @return
   * @author caizh
   * @since [1.0.0]
   * @version [1.0.0,2017年2月5日]
   */
  @RequestMapping("/upload_03")
  public String fileUpload_3(@RequestParam(value="file_03",required=false)MultipartFile file,
      HttpServletRequest request){
    String path = request.getSession().getServletContext().getRealPath("upload");
    System.out.println(path);
    String fileName = file.getOriginalFilename();
    File targetFile = new File(path,fileName);
    if(!targetFile.exists()){
      targetFile.mkdirs();
    }
    //保存
    try {
      file.transferTo(targetFile);
    }catch(Exception e){
      e.printStackTrace();
    }
    return "view/success";
  }

  /**
   * 采用spring提供的上傳文件的方法
   * <請(qǐng)?zhí)鎿Q成功能描述> <br>
   * <請(qǐng)?zhí)鎿Q成詳細(xì)描述>
   * @param request
   * @return
   * @throws IllegalStateException
   * @throws IOException
   * @author caizh
   * @since [1.0.0]
   * @version [1.0.0,2017年2月5日]
   */
  @RequestMapping("/upload_spring")
  public String springUpload(HttpServletRequest request)throws IllegalStateException, IOException{
    long startTime = System.currentTimeMillis();
    //將當(dāng)前上下文初始化給 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("方法三的運(yùn)行時(shí)間:"+String.valueOf(endTime-startTime)+"ms");    
    return "view/success";
  }

}

好了,全部代碼都給出了,博主是測(cè)試成功了,感興趣的朋友可以去比較不同上傳方式的效率!

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • java servlet手機(jī)app訪問(wèn)接口(二)短信驗(yàn)證

    java servlet手機(jī)app訪問(wèn)接口(二)短信驗(yàn)證

    這篇文章主要介紹了java servlet手機(jī)app訪問(wèn)接口(二),短信驗(yàn)證,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2016-12-12
  • Java集合List和Map互轉(zhuǎn)的方法總結(jié)

    Java集合List和Map互轉(zhuǎn)的方法總結(jié)

    有時(shí)候我們需要將給定的List轉(zhuǎn)換為Map,或者M(jìn)ap轉(zhuǎn)換為L(zhǎng)ist,本文主要介紹了Java集合List和Map互轉(zhuǎn)的方法總結(jié),具有一定的參考價(jià)值,感興趣的可以了解一下
    2023-09-09
  • Java快速排序的實(shí)現(xiàn)詳細(xì)代碼及通俗解釋

    Java快速排序的實(shí)現(xiàn)詳細(xì)代碼及通俗解釋

    這篇文章主要介紹了Java快速排序?qū)崿F(xiàn)的相關(guān)資料,快速排序是一種高效的排序算法,通過(guò)選擇一個(gè)基準(zhǔn)值將數(shù)組分成兩部分,左邊的元素比基準(zhǔn)值小,右邊的元素比基準(zhǔn)值大,然后遞歸地對(duì)這兩部分進(jìn)行排序,需要的朋友可以參考下
    2025-02-02
  • 詳解SpringBoot結(jié)合swagger2快速生成簡(jiǎn)單的接口文檔

    詳解SpringBoot結(jié)合swagger2快速生成簡(jiǎn)單的接口文檔

    這篇文章主要介紹了詳解SpringBoot結(jié)合swagger2快速生成簡(jiǎn)單的接口文檔,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2019-05-05
  • Java中Semaphore(信號(hào)量)的使用方法

    Java中Semaphore(信號(hào)量)的使用方法

    這篇文章主要介紹了Java中Semaphore(信號(hào)量)的使用方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-08-08
  • Spring DATA JPA 中findAll 進(jìn)行OrderBy方式

    Spring DATA JPA 中findAll 進(jìn)行OrderBy方式

    這篇文章主要介紹了Spring DATA JPA 中findAll 進(jìn)行OrderBy方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-11-11
  • java多線程消息隊(duì)列的實(shí)現(xiàn)代碼

    java多線程消息隊(duì)列的實(shí)現(xiàn)代碼

    本篇文章主要介紹了java多線程消息隊(duì)列的實(shí)現(xiàn)代碼,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-07-07
  • SpringCloud Feign的使用代碼實(shí)例

    SpringCloud Feign的使用代碼實(shí)例

    這篇文章主要介紹了SpringCloud Feign的使用代碼實(shí)例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-03-03
  • 基于OAuth2.0授權(quán)系統(tǒng)的驗(yàn)證碼功能的實(shí)現(xiàn)

    基于OAuth2.0授權(quán)系統(tǒng)的驗(yàn)證碼功能的實(shí)現(xiàn)

    本篇教程給大家分享基于OAuth2.0授權(quán)系統(tǒng)的驗(yàn)證碼功能的實(shí)現(xiàn),驗(yàn)證碼功能的實(shí)現(xiàn)是采用Zuul網(wǎng)關(guān)的Filter過(guò)濾器進(jìn)行校驗(yàn)驗(yàn)證碼,具體實(shí)現(xiàn)代碼跟隨小編一起看看吧
    2021-05-05
  • Java基礎(chǔ)之java處理ip的工具類(lèi)

    Java基礎(chǔ)之java處理ip的工具類(lèi)

    這篇文章主要介紹了Java基礎(chǔ)應(yīng)用,使用java處理ip的工具類(lèi)的相關(guān)資料,需要的朋友可以參考下
    2014-10-10

最新評(píng)論

辉南县| 宾川县| 广南县| 隆化县| 开原市| 东丽区| 黄浦区| 壶关县| 高邑县| 喀喇沁旗| 大洼县| 迁西县| 镇巴县| 分宜县| 历史| 万州区| 驻马店市| 安图县| 龙陵县| 石楼县| 昌都县| 湖口县| 宜川县| 兴宁市| 新宁县| 盐城市| 合水县| 边坝县| 商水县| 波密县| 阳江市| 德州市| 吴桥县| 慈溪市| 铜陵市| 玛曲县| 海城市| 阿城市| 景泰县| 太仆寺旗| 广平县|