亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

SpringBoot上傳文件到本服務(wù)器 目錄與jar包同級(jí)問(wèn)題

 更新時(shí)間:2018年11月11日 16:02:07   作者:LinkinStar  
這篇文章主要介紹了SpringBoot上傳文件到本服務(wù)器 目錄與jar包同級(jí)問(wèn)題,需要的朋友可以參考下

前言

看標(biāo)題好像很簡(jiǎn)單的樣子,但是針對(duì)使用jar包發(fā)布SpringBoot項(xiàng)目就不一樣了。
當(dāng)你使用tomcat發(fā)布項(xiàng)目的時(shí)候,上傳文件存放會(huì)變得非常簡(jiǎn)單,因?yàn)槟憧梢噪S意操作項(xiàng)目路徑下的資源。但是當(dāng)你使用SpringBoot的jar包發(fā)布項(xiàng)目的時(shí)候,你會(huì)發(fā)現(xiàn),你不能像以前一樣操作文件了。當(dāng)你使用File file = new File()的時(shí)候根本不知道這個(gè)路徑怎么辦。而且總不能很小的項(xiàng)目也給它構(gòu)建一個(gè)文件服務(wù)器吧。所以這次就來(lái)解決這樣的問(wèn)題。
不想知道細(xì)節(jié)的,可以直接跳轉(zhuǎn)到最后封裝的部分,里面有相應(yīng)的實(shí)現(xiàn)。

原因

其實(shí)原因你也想的到,你無(wú)法對(duì)jar包里面的資源進(jìn)行操作,而對(duì)于springboot項(xiàng)目來(lái)說(shuō),你只能讀取里面的文件,只能使用InputStream。使用如下方式針對(duì)資源文件進(jìn)行讀取:

ClassPathResource classPathResource = new ClassPathResource("static/a.txt");
classPathResource.getInputStream();

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

通過(guò)上述方式可以獲取a中的內(nèi)容

實(shí)現(xiàn)

因?yàn)槲覀儫o(wú)法操作jar包內(nèi)容,所以我們只能將文件存放在別的位置,與jar包同級(jí)的目錄是一個(gè)不錯(cuò)的選擇。

首先獲取根目錄

File path = new File(ResourceUtils.getURL("classpath:").getPath());
if(!path.exists()) {
path = new File("");
}

然后獲取需要的目錄,我們?cè)O(shè)定我們需要將文件存放在與jar包同級(jí)的static的upload目錄下

File upload = new File(path.getAbsolutePath(),"static/upload/");
if(!upload.exists()) {
upload.mkdirs();
}

然后當(dāng)我們要將上傳的文件存儲(chǔ)的時(shí)候,按照下面的方式去新建文件,然后使用你喜歡的方式進(jìn)行存儲(chǔ)就可以了。

File upload = new File(path.getAbsolutePath(),"static/upload/test.jpg");
FileUtils.copyInputStreamToFile(inputStream, uploadFile);

不要忘記

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

spring:
# 靜態(tài)資源路徑
resources:
static-locations: classpath:static/,file:static/

這樣就能實(shí)現(xiàn)上傳文件

最后的封裝

工具類:

https://github.com/LinkinStars/springBootTemplate/blob/master/src/main/java/com/linkinstars/springBootTemplate/util/FileHandleUtil.java

這個(gè)工具類依賴了

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

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

如何使用:

/**
* 測(cè)試文件上傳
*/
@RequestMapping("/upload")
@ResponseBody
public String upload(MultipartFile file) throws IOException {
return "文件存放路徑為" + FileHandleUtil.upload(file.getInputStream(), "image/", file.getOriginalFilename());
}

最后效果


Follow up

這個(gè)工具類只是實(shí)現(xiàn)了如何上傳文件,入?yún)⒁仓挥蠭nputStream,后續(xù)如何你需要接入?yún)?shù)File或者加入文件名防重復(fù)等等,就由你來(lái)完成了。

總結(jié)

以上所述是小編給大家介紹的SpringBoot上傳文件到本服務(wù)器 目錄與jar包同級(jí)問(wèn)題,希望對(duì)大家有所幫助,如果大家有任何疑問(wèn)歡迎給我留言,小編會(huì)及時(shí)回復(fù)大家的!

相關(guān)文章

  • springboot整合jcasbin權(quán)限管理

    springboot整合jcasbin權(quán)限管理

    jcasbin的權(quán)限控制非常簡(jiǎn)單,本文就來(lái)介紹一下springboot整合jcasbin權(quán)限管理,具有一定的參考價(jià)值,感興趣的可以了解一下
    2023-09-09
  • 淺談HTTP使用BASIC認(rèn)證的原理及實(shí)現(xiàn)方法

    淺談HTTP使用BASIC認(rèn)證的原理及實(shí)現(xiàn)方法

    下面小編就為大家?guī)?lái)一篇淺談HTTP使用BASIC認(rèn)證的原理及實(shí)現(xiàn)方法。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2016-11-11
  • Java+MyBatis+MySQL開(kāi)發(fā)環(huán)境搭建流程詳解

    Java+MyBatis+MySQL開(kāi)發(fā)環(huán)境搭建流程詳解

    Java的MyBatis框架提供了強(qiáng)大的數(shù)據(jù)庫(kù)操作支持,這里我們先在本地的開(kāi)發(fā)環(huán)境中上手,來(lái)看一下Java+MyBatis+MySQL開(kāi)發(fā)環(huán)境搭建流程詳
    2016-06-06
  • 詳解Maven環(huán)境的搭建與idea配置

    詳解Maven環(huán)境的搭建與idea配置

    本篇文章主要介紹了詳解Maven環(huán)境的搭建與idea配置,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-12-12
  • Java精品項(xiàng)目瑞吉外賣之員工信息管理篇

    Java精品項(xiàng)目瑞吉外賣之員工信息管理篇

    這篇文章主要為大家詳細(xì)介紹了java精品項(xiàng)目-瑞吉外賣訂餐系統(tǒng),此項(xiàng)目過(guò)大,分為多章獨(dú)立講解,本篇內(nèi)容為員工信息分頁(yè)查詢與啟用或禁用員工狀態(tài),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-05-05
  • Java語(yǔ)法基礎(chǔ)之函數(shù)的使用說(shuō)明

    Java語(yǔ)法基礎(chǔ)之函數(shù)的使用說(shuō)明

    函數(shù)就是定義在類中的具有特定功能的一段小程序,函數(shù)也稱為方法
    2013-07-07
  • 如何將eclipse項(xiàng)目導(dǎo)入到idea的方法步驟(圖文)

    如何將eclipse項(xiàng)目導(dǎo)入到idea的方法步驟(圖文)

    這篇文章主要介紹了如何將eclipse項(xiàng)目導(dǎo)入到idea的方法步驟,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-03-03
  • 使用java對(duì)一副撲克牌建模

    使用java對(duì)一副撲克牌建模

    這篇文章主要為大家詳細(xì)介紹了如何使用java對(duì)一副撲克牌建模,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-04-04
  • Java創(chuàng)建對(duì)象的四種方式詳解

    Java創(chuàng)建對(duì)象的四種方式詳解

    這篇文章主要介紹了Java創(chuàng)建對(duì)象的四種方式詳解,如果我們不想利用默認(rèn)構(gòu)造器來(lái)創(chuàng)建java對(duì)象,而想利用指定的構(gòu)造器來(lái)創(chuàng)建java對(duì)象,則需要利用Construtor對(duì)象,每個(gè)Construtor對(duì)應(yīng)一個(gè)構(gòu)造器,需要的朋友可以參考下
    2023-11-11
  • java使用CKEditor實(shí)現(xiàn)圖片上傳功能

    java使用CKEditor實(shí)現(xiàn)圖片上傳功能

    這篇文章主要為大家詳細(xì)介紹了java使用CKEditor實(shí)現(xiàn)圖片上傳功能,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-07-07

最新評(píng)論