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

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|JavaScript|易語言|

服務器之家 - 編程語言 - Java教程 - Spring boot 實現單個或批量文件上傳功能

Spring boot 實現單個或批量文件上傳功能

2021-05-26 12:18佳佳樂2503 Java教程

這篇文章主要介紹了Spring boot 實現單個或批量文件上傳功能,非常不錯,具有一定的參考借鑒價值,需要的朋友參考下吧

一:添加依賴:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<!-- thymeleaf模板插件 -->
  <dependency>
    <groupid>org.springframework.boot</groupid>
    <artifactid>spring-boot-starter-thymeleaf</artifactid>
  </dependency>
   <!-- jsp依賴 -->
<dependency>
  <groupid>javax.servlet</groupid>
  <artifactid>jstl</artifactid>
</dependency>
<dependency>
  <groupid>org.apache.tomcat.embed</groupid>
  <artifactid>tomcat-embed-jasper</artifactid>
  <!--<scope>provided</scope>-->
</dependency>

二:application.xml配置文件路徑:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
#配置上傳文件地址
image.location.path=f:/image/
#配置文件大小限制
spring.http.multipart.maxfilesize=100mb
spring.http.multipart.maxrequestsize=100mb
#靜態頁面的訪問配置
spring.thymeleaf.cache=false
spring.thymeleaf.prefix=classpath:/templates/
spring.thymeleaf.check-template-location=true
spring.thymeleaf.suffix=.html
spring.thymeleaf.encoding=utf-8
spring.thymeleaf.content-type=text/html
spring.thymeleaf.mode=html5

三:編寫靜態頁面(src/main/resources下建文件夾static(static存放靜態文件,比如 css、js、image…)和templates(存放靜態頁面)兩個是同級目錄),先在templates 中新建一個 uploadimg.html。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<!doctype html>
<html>
 <head>
  <title>uploadimg.html</title>
  <meta name="keywords" content="keyword1,keyword2,keyword3"></meta>
  <meta name="description" content="this is my page"></meta>
  <meta name="content-type" content="text/html; charset=utf-8"></meta>
  <!--<link rel="stylesheet" type="text/css" href="./styles.css" rel="external nofollow" >-->
 </head>
 <body>
 <form enctype="multipart/form-data" method="post" action="/dc/fileupload">
  圖片<input type="file" name="file"/>
  <input type="submit" value="上傳"/>
  </form>
 </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
package com.hot.analysis.controller.file;
import java.io.bufferedinputstream;
import java.io.file;
import java.io.fileinputstream;
import java.io.ioexception;
import java.io.outputstream;
import java.util.date;
import java.util.random;
import javax.servlet.http.httpservletrequest;
import javax.servlet.http.httpservletresponse;
import org.springframework.beans.factory.annotation.value;
import org.springframework.web.bind.annotation.postmapping;
import org.springframework.web.bind.annotation.requestmapping;
import org.springframework.web.bind.annotation.responsebody;
import org.springframework.web.bind.annotation.restcontroller;
import org.springframework.web.multipart.multipartfile;
import org.springframework.web.servlet.modelandview;
import com.hot.analysis.exception.myexception;
@restcontroller
public class fileuploadcontroller {
 //獲取配置文件的路徑
 @value("${image.location.path}")
 private string resourcedir;
 /**
   * 實現文件上傳
   * */
 @requestmapping(value = "/index")
 public modelandview toindex() {
 modelandview mv = new modelandview("uploadimg");
 return mv;
 }
  //單個文件上傳
  @requestmapping("/dc/fileupload")
  @responsebody
  public string fileupload( multipartfile file){
   // 獲取上傳文件路徑
    string uploadpath = file.getoriginalfilename();
    // 獲取上傳文件的后綴
    string filesuffix = uploadpath.substring(uploadpath.lastindexof(".") + 1, uploadpath.length());
    if (filesuffix.equals("apk")) {
    uploadpath = resourcedir;
    } else {
    // 上傳目錄地址
    // string uploadpath="e:/hot-manage/image/";//windows路徑
    uploadpath =resourcedir;// liux路勁
    }
    // 上傳文件名
    string filename = new date().gettime() + new random().nextint(100) + "." + filesuffix;
    file savefile = new file(uploadpath + filename);
    if (!savefile.getparentfile().exists()) {
    savefile.getparentfile().mkdirs();
    }
    try {
    file.transferto(savefile);
    } catch (illegalstateexception e) {
    e.printstacktrace();
    } catch (ioexception e) {
    e.printstacktrace();
    }
    if (filesuffix.equals("apk")) {
    return "/apk/" + filename;
    } else {
    return "/image/" + filename;
    }
   }
 // 批量上傳
  @postmapping("/dc/morefileupload")
 public string bacthfileupload(multipartfile[] file) throws myexception {
  stringbuffer buffer = new stringbuffer();
  for (multipartfile multipartfile : file) {
  string str = fileupload(multipartfile);
  buffer.append(str);
  buffer.append(",");
  }
  string all = buffer.substring(0, buffer.length() - 1);
  return all;
 }
 // 刪除文件
  @postmapping("/dc/deletefile")
  public string delfile(string path) {
   string resultinfo = null;
 int lastindexof = path.lastindexof("/");
 string sb = path.substring(lastindexof + 1, path.length());
 sb = "f:/image/" + sb;
 file file = new file(sb);
 if (file.exists()) {
  if (file.delete()) {
  resultinfo = "1-刪除成功";
  } else {
  resultinfo = "0-刪除失敗";
  }
 } else {
  resultinfo = "文件不存在!";
 }
 return resultinfo;
 }
 //文件下載相關代碼
  @requestmapping("/download")
  public string downloadfile(httpservletrequest request, httpservletresponse response) {
    string filename = "aim_test.txt";// 設置文件名,根據業務需要替換成要下載的文件名
    if (filename != null) {
      //設置文件路徑
      string realpath = "d://aim//";
      file file = new file(realpath , filename);
      if (file.exists()) {
        response.setcontenttype("application/force-download");// 設置強制下載不打開
        response.addheader("content-disposition", "attachment;filename=" + filename);// 設置文件名
        byte[] buffer = new byte[1024];
        fileinputstream fis = null;
        bufferedinputstream bis = null;
        try {
          fis = new fileinputstream(file);
          bis = new bufferedinputstream(fis);
          outputstream os = response.getoutputstream();
          int i = bis.read(buffer);
          while (i != -1) {
            os.write(buffer, 0, i);
            i = bis.read(buffer);
          }
          system.out.println("success");
        } catch (exception e) {
          e.printstacktrace();
        } finally {
          if (bis != null) {
            try {
              bis.close();
            } catch (ioexception e) {
              e.printstacktrace();
            }
          }
          if (fis != null) {
            try {
              fis.close();
            } catch (ioexception e) {
              e.printstacktrace();
            }
          }
        }
      }
    }
    return null;
  }
 
  }

測試:

Spring boot 實現單個或批量文件上傳功能

成功返回路徑:

Spring boot 實現單個或批量文件上傳功能

查看文件夾:

Spring boot 實現單個或批量文件上傳功能

總結

以上所述是小編給大家介紹的spring boot 實現單個或批量文件上傳功能,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對服務器之家網站的支持!

原文鏈接:https://blog.csdn.net/qq_33355858/article/details/81747101

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 亚洲精品www久久久久久 | 久久精品久久久 | 日本精品一区二区在线播放 | 欧洲另类一二三四区 | 亚欧洲乱码视频一二三区 | 91精品大神国产在线播放 | 成人免费在线视频网 | 亚洲国产成人在线视频 | 色婷婷综合久久久中文字幕 | 亚洲高清免费在线观看 | tk白嫩玉足脚心vk | 亚洲第一网站免费视频 | 久久99热成人精品国产 | 亚洲国产综合久久久无码色伦 | 四虎影视4hutv最新地址在线 | 苍井空色欲迷墙 | 特黄特色一级aa毛片免费观看 | 亚洲日本视频在线 | 俄罗斯美女破苞 | 成人榴莲视频 | 成年性生交大片免费看 | 日本一区三区 | 接吻吃胸摸下面啪啪教程 | 免费网站直接进入 | 日韩精品福利视频一区二区三区 | 国产v日韩v欧美v精品专区 | 黄情视频| 亚洲理论视频 | 4hc44四虎www在线影院男同 | 欧美精品久久久亚洲 | 出轨娇妻的呻吟1—9 | 高h短篇校园1v1 | 日本动漫xxxxxx| 无人区在线观看免费视频国语 | 红杏劫| 猛h辣h高h文湿校园1v1 | 激情五月姐姐 | 国产色网 | 97久久天天综合色天天综合色hd | 超级乱淫伦短篇小说做车 | 国产欧美va欧美va香蕉在线观看 |