一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務(wù)器之家:專注于服務(wù)器技術(shù)及軟件下載分享
分類導(dǎo)航

PHP教程|ASP.NET教程|JAVA教程|ASP教程|編程技術(shù)|正則表達(dá)式|C/C++|IOS|C#|Swift|Android|JavaScript|易語言|

服務(wù)器之家 - 編程語言 - JAVA教程 - SpringMVC上傳文件FileUpload使用方法詳解

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

2021-02-07 12:20hundan_520520 JAVA教程

這篇文章主要為大家詳細(xì)介紹了SpringMVC上傳文件FileUpload的使用方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下

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

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

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
<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版本號 -->
    <spring.version>3.2.8.RELEASE</spring.version>
    <!-- junit版本號 -->
    <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上傳文件依賴 -->
    <dependency>
      <groupId>commons-fileupload</groupId>
      <artifactId>commons-fileupload</artifactId>
      <version>1.3.1</version>
    </dependency>
    <!-- 添加Spring依賴 -->
    <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單元測試依賴 -->
    <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中添加代碼:

?
1
2
3
4
5
6
7
<!-- springMVC上傳文件時,需要配置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>

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

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
<%@ 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>

?
1
2
3
4
5
6
7
8
9
10
11
12
<%@ 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 的代碼:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
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 {
 
  /**
   * 通過流的方式上傳文件
   * @RequestParam("file") 將name=file控件得到的文件封裝成CommonsMultipartFile 對象
   * <請?zhí)鎿Q成功能描述> <br>
   * <請?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 {
    //用來檢測程序運行時間
    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;
      //一個一個字節(jié)的讀取并寫入
      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("方法一的運行時間:"+String.valueOf(endTime-startTime)+"ms");
    return "view/success";
  }
 
  /**
   * 采用file.Transto 來保存上傳的文件
   * <請?zhí)鎿Q成功能描述> <br>
   * <請?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);
    //通過CommonsMultipartFile 的方法直接寫文件
    file.transferTo(newFile);
    long endTime = System.currentTimeMillis();
    System.out.println("方法二的運行時間:"+String.valueOf(endTime-startTime)+"ms");
    return "view/success";   
  }
 
  /**
   * 使用MultipartFile上傳文件
   * <請?zhí)鎿Q成功能描述> <br>
   * <請?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提供的上傳文件的方法
   * <請?zhí)鎿Q成功能描述> <br>
   * <請?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("方法三的運行時間:"+String.valueOf(endTime-startTime)+"ms");   
    return "view/success";
  }
 
}

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

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持服務(wù)器之家。

原文鏈接:http://blog.csdn.net/hundan_520520/article/details/54880319

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 日韩免费在线视频观看 | 国产高清在线观看 | 亚州在线 | 亚洲欧美日韩在线观看看另类 | 午夜在线播放免费人成无 | 精品日韩欧美一区二区三区 | 女生被爆操 | 91极品国产 | 秋霞午夜 | 午夜勾魂曲 | 欧美在线视频一区二区 | yy8090韩国日本三理论免费 | 无码毛片内射白浆视频 | 欧美成人精品第一区二区三区 | 日韩高清一区二区三区不卡 | fistingvideos头交尿眼 | 国产美女极品免费视频 | 亚洲视频在线观看免费 | 午夜视频网站 | 欧美日韩久久中文字幕 | 韩国甜性涩爱免费观看 | 国产精品区牛牛影院 | 国产色视频一区二区三区 | 国产免费看黄的私人影院 | 久久99re热在线播放7 | 人人爱天天做夜夜爽88 | 无人区在线观看免费视频国语 | 69欧美另类xxxxx高清 | 秋霞色| 国产成人精品本亚洲 | 亚洲国产天堂 | 红楼梦黄色小说 | 精品国产乱码久久久久久人妻 | 亚洲国产精品久久久久久 | 亚洲精品乱码久久久久久蜜桃图片 | 女子校生下媚药在线观看 | 91免费精品国自产拍在线不卡 | 欧美午夜精品 | 视频在线观看一区二区三区 | 国产亚洲精品激情一区二区三区 | 国产综合网站 |