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

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

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

服務器之家 - 編程語言 - Java教程 - SpringBoot上傳文件到本服務器 目錄與jar包同級問題

SpringBoot上傳文件到本服務器 目錄與jar包同級問題

2021-06-11 13:31LinkinStar Java教程

這篇文章主要介紹了SpringBoot上傳文件到本服務器 目錄與jar包同級問題,需要的朋友可以參考下

前言

看標題好像很簡單的樣子,但是針對使用jar包發布springboot項目就不一樣了。
當你使用tomcat發布項目的時候,上傳文件存放會變得非常簡單,因為你可以隨意操作項目路徑下的資源。但是當你使用springboot的jar包發布項目的時候,你會發現,你不能像以前一樣操作文件了。當你使用file file = new file()的時候根本不知道這個路徑怎么辦。而且總不能很小的項目也給它構建一個文件服務器吧。所以這次就來解決這樣的問題。
不想知道細節的,可以直接跳轉到最后封裝的部分,里面有相應的實現。

原因

其實原因你也想的到,你無法對jar包里面的資源進行操作,而對于springboot項目來說,你只能讀取里面的文件,只能使用inputstream。使用如下方式針對資源文件進行讀取:

?
1
2
classpathresource classpathresource = new classpathresource("static/a.txt");
classpathresource.getinputstream();

其中,這個a.txt存放在resources/static目錄下

通過上述方式可以獲取a中的內容

實現

因為我們無法操作jar包內容,所以我們只能將文件存放在別的位置,與jar包同級的目錄是一個不錯的選擇。

首先獲取根目錄

?
1
2
3
4
file path = new file(resourceutils.geturl("classpath:").getpath());
if(!path.exists()) {
path = new file("");
}

然后獲取需要的目錄,我們設定我們需要將文件存放在與jar包同級的static的upload目錄下

?
1
2
3
4
file upload = new file(path.getabsolutepath(),"static/upload/");
if(!upload.exists()) {
upload.mkdirs();
}

然后當我們要將上傳的文件存儲的時候,按照下面的方式去新建文件,然后使用你喜歡的方式進行存儲就可以了。

?
1
2
file upload = new file(path.getabsolutepath(),"static/upload/test.jpg");
fileutils.copyinputstreamtofile(inputstream, uploadfile);

不要忘記

你需要在application.yml配置中加入以下代碼,指定兩個靜態資源的目錄,這樣你上傳的文件就能被外部訪問到了。

?
1
2
3
4
spring:
# 靜態資源路徑
resources:
static-locations: classpath:static/,file:static/

這樣就能實現上傳文件

最后的封裝

工具類:

https://github.com/linkinstars/springboottemplate/blob/master/src/main/java/com/linkinstars/springboottemplate/util/filehandleutil.java

這個工具類依賴了

?
1
2
compile group: 'commons-fileupload', name: 'commons-fileupload', version: '1.3.1'
compile group: 'commons-io', name: 'commons-io', version: '2.4'

如何你不喜歡完全可以根據自己的喜歡改變

如何使用:

?
1
2
3
4
5
6
7
8
/**
* 測試文件上傳
*/
@requestmapping("/upload")
@responsebody
public string upload(multipartfile file) throws ioexception {
return "文件存放路徑為" + filehandleutil.upload(file.getinputstream(), "image/", file.getoriginalfilename());
}

最后效果


SpringBoot上傳文件到本服務器 目錄與jar包同級問題

follow up

這個工具類只是實現了如何上傳文件,入參也只有inputstream,后續如何你需要接入參數file或者加入文件名防重復等等,就由你來完成了。

總結

以上所述是小編給大家介紹的springboot上傳文件到本服務器 目錄與jar包同級問題,希望對大家有所幫助,如果大家有任何疑問歡迎給我留言,小編會及時回復大家的!

原文鏈接:http://www.cnblogs.com/linkstar/p/9938721.html

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 日本美女视频韩国视频网站免费 | 四虎库 | 好紧好爽再叫浪一点点潘金莲 | 香蕉视频在线观看网站 | 欧美另类xxx精品人妖 | 日韩资源在线 | 青春娱乐国产分类精品二 | 情侣奴伺候女王第2部分小说 | 天天久久影视色香综合网 | 国产好痛疼轻点好爽的视频 | 国产v在线播放 | 国产nv精品你懂得 | 国产v日韩v欧美v精品专区 | 国产精品露脸国语对白99 | 免费又爽又黄禁片视频在线播放 | 日韩欧美一区二区三区视频 | 日韩欧美亚洲一区二区综合 | 亚洲国产天堂 | 国产在线观看精品香蕉v区 国产在线观看a | 亚洲精品在线免费观看视频 | 桃色导航| 日本免费在线观看 | 九九热在线观看视频 | 国产图片综合区 | 春意影院午夜爽爽爽免费 | 国产xxx在线 | 91精品啪在线观看国产日本 | 精品一久久香蕉国产线看播放 | 国产特黄a级在线视频 | 99热精品久久 | 亚洲一区二区三区深夜天堂 | 办公室恋情在线观看 | 精品蜜臀AV在线天堂 | 国产成人综合一区精品 | 久久婷婷五月综合色丁香花 | 国产欧美一区二区成人影院 | 高清欧美videossexo免费 | a一区二区三区视频 | 亚洲不卡视频 | 久久机热视频 这里只有精品首页 | 日韩成人av在线 |