Springboot項目實現簡單的文件服務器,實現文件上傳+圖片及文件回顯

文章目錄

  • 寫在前面
  • 一、配置
    • 1、application.properties
    • 2、webMvc配置
    • 3、查看效果
  • 二、文件上傳

寫在前面

平常工作中的項目,上傳的文件一般都會傳到對象存儲云服務中。當接手一個小項目,如何自己動手搭建一個文件服務器,實現圖片、文件的回顯,可以通過http請求獲取到呢?

注!本文以Springboot為基礎,在其web環境進行搭建的

一、配置

1、application.properties

local.file.dir=D:/file/
local.file.path=/data

2、webMvc配置

@Configuration
public class WebmvcConfigurer implements WebMvcConfigurer {@Value("${local.file.dir}")private String localFileDir;@Value("${local.file.path}")private String localFilePath;@Overridepublic void addResourceHandlers(@NotNull ResourceHandlerRegistry registry) {File file = new File(localFileDir);if (file.exists() && file.isFile()) {throw new RuntimeException("本地路徑已被占用:" + localFileDir);}if(!file.exists()) {file.mkdirs();}registry.addResourceHandler(localFilePath + "/**").addResourceLocations("file:" + localFileDir);}

注意,此處的addResourceHandler是添加的我們訪問時的路徑,addResourceLocations添加的是本地文件路徑,如果使用本地路徑必須要加file:

3、查看效果

我們在D:/file/目錄中存放一個aaa.jpg的文件,訪問localhost:8080/data/aaa.jpg就可以獲取到這張圖片了!

二、文件上傳

@RestController
public class Controller {@Value("${local.file.dir}")private String localFileDir;@Value("${local.file.path}")private String localFilePath;@PostMapping("/upload")public Map<String, String> uploadFile(@RequestParam("file") MultipartFile file){Map<String, String> resultMap = new HashMap<>();//獲取上傳文件的原始文件名String fileName = file.getOriginalFilename();if(StringUtils.isBlank(fileName) || !fileName.contains(".")) {throw new RuntimeException("文件名有誤!");}// uuid生成文件String fileLastName = fileName.substring(fileName.lastIndexOf('.'));String localFileName = UUID.randomUUID() + fileLastName;//保存文件FileUtils.saveFile(file, localFileDir + localFileName);// 拼文件名resultMap.put("url", localFilePath + "/" + localFileName);return resultMap;}
}

調用文件上傳時,會返回一個文件的url:/data/aaa.jpg,此時再拼上域名就可以訪問該文件了!

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/211141.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/211141.shtml
英文地址,請注明出處:http://en.pswp.cn/news/211141.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

一篇文章帶你了解并使用mybatis框架

mybatis簡介&#xff1a; MyBatis 是一款優秀的持久層框架&#xff0c;它支持自定義 SQL、存儲過程以及高級映射。MyBatis 免除了幾乎所有的 JDBC 代碼以及設置參數和獲取結果集的工作。MyBatis 可以通過簡單的 XML 或注解來配置和映射原始類型、接口和 Java POJO&#xff08;P…

JavaScript中的發布訂閱和觀察者模式:如何優雅地處理事件和數據更新

?&#x1f308;個人主頁&#xff1a;前端青山 &#x1f525;系列專欄&#xff1a;JavaScript篇 &#x1f516;人終將被年少不可得之物困其一生 依舊青山,本期給大家帶來JavaScript篇專欄內容:JavaScript-訂閱觀察者模式 目錄 說說你對發布訂閱、觀察者模式的理解&#xff1f;…

用生命做事,無人能超越

今天看了《藝術人生——紅樓夢劇組20年再聚首》&#xff0c;然后搜索了一下里面的核心人物及其經歷。實話說&#xff0c;看完后我內心無法平靜&#xff0c;涌動著各種思緒。一是20多年前這群青澀演員的人生際遇&#xff0c;讓我感慨。很多人&#xff0c;用這樣的機會&#xff0…

‘ChatGLMTokenizer‘ object has no attribute ‘tokenizer‘解決方案

大家好,我是愛編程的喵喵。雙985碩士畢業,現擔任全棧工程師一職,熱衷于將數據思維應用到工作與生活中。從事機器學習以及相關的前后端開發工作。曾在阿里云、科大訊飛、CCF等比賽獲得多次Top名次。現為CSDN博客專家、人工智能領域優質創作者。喜歡通過博客創作的方式對所學的…

Linux系統---簡易伙伴系統

顧得泉&#xff1a;個人主頁 個人專欄&#xff1a;《Linux操作系統》 《C/C》 《LeedCode刷題》 鍵盤敲爛&#xff0c;年薪百萬&#xff01; 一、題目要求 1.采用C語言實現 2.伙伴系統采用free_area[11]數組來組織。要求伙伴內存最小為一個頁面&#xff0c;頁面大小為4KB…

我在Vscode學OpenCV 圖像處理二(濾除噪聲干擾)

圖像處理二 濾除噪聲干擾三、噪聲3.1圖像噪聲3.2 濾波3.2.1均值濾波&#xff08;1&#xff09;錨點&#xff08;2&#xff09;中心點&#xff08;下面第3小點會詳細解釋&#xff09;&#xff08;3&#xff09;核的大小奇偶數的區別&#xff08;1&#xff09;舉例奇偶的例子&…

【工具使用-JFlash】如何使用Jflash擦除和讀取MCU內部指定扇區的數據

一&#xff0c;簡介 在調試的過程中&#xff0c;特別是在調試向MCU內部flash寫數據的時候&#xff0c;我們常常要擦除數據區的內容&#xff0c;而不想擦除程序取。那這種情況就需要擦除指定的扇區數據即可。本文介紹一種方法&#xff0c;可以擦除MCU內部Flash中指定扇區的數據…

六級高頻詞匯1

目錄 高頻詞匯 參考連接 高頻詞匯 1. alter v. 改變&#xff0c;改動&#xff0c;變更 2. burst vi. n. 突然發生&#xff0c;爆裂 3. dispose vi. 除掉&#xff1b;處置&#xff1b;解決&#xff1b;處理(of) 4. blast n. 爆炸&#xff1b;氣流 vi. 炸&#xff0c;炸掉 …

【win10用vim開發stm32】二、vimspector的單片機調試

▲ 我的vim配置倉庫: gitee&#xff0c;vim相關優先在gitee更新&#xff0c;博客vim專欄作為部分補充和使用說明 ▲ 本文提供vimspector調試的一個示例&#xff0c;和keil的調試功能比當然還是有很大差距&#xff0c;不過簡單的調試功能如單步、復位、運行這些都跑通了&#xf…

Unity打包到Webgl平臺以及遇到的問題

Unity打包到Webgl平臺以及遇到的問題 參考網站 Unity打包WebGL的全過程及在打包和使用過程中會遇到的問題(本地測試)-CSDN博客 unity打包到Webgl 并配置能正常運行 這里我用的是Unity2022.3.3f1c1版本 有兩種方法 1、配置本地web服務 2、安裝vsCode>添加插件LiveServe…

AI仿寫軟件大全,當然熱門的仿寫軟件

在創作過程中&#xff0c;往往需要大量的靈感和原創性&#xff0c;而AI仿寫軟件便提供了一種高效、智能的解決方案。本文旨在專心分享AI仿寫軟件有哪些&#xff0c;并為大家解析哪幾款好用的AI仿寫軟件。 AI仿寫的使用 隨著互聯網的快速發展&#xff0c;內容創作需求不斷增長&…

Rellax.js,一款超酷的 JavaScript 滾動效果庫

嗨&#xff0c;大家好&#xff0c;歡迎來到猿鎮&#xff0c;我是鎮長&#xff0c;lee。 又到了和大家見面的時間&#xff0c;今天和大家分享一款輕松實現視差滾動效果的 JavaScript 庫——Rellax.js。無需大量的配置&#xff0c;即可為你的網站增色不少。 什么是Rellax.js&am…

奧威亞教學視頻應用云平臺 VideoCover任意文件上傳漏洞復現

0x01 產品簡介 廣州市奧威亞電子科技有限公司教學視頻應用云平臺是一個專門為教育機構和個人教師設計的在線學習平臺。該平臺提供豐富的教學資源和功能,旨在提升教學效果和學習體驗。 0x02 漏洞概述 奧威亞教學視頻應用云平臺 VideoCover.aspx接口處存在任意文件上傳漏洞,未…

數字邏輯電路基礎-組合邏輯電路之4位先行進位加法器

文章目錄 一、問題描述二、verilog源碼三、仿真結果一、問題描述 前面介紹4位行波進位全加器(串行加法器)的原理及verilog實現,但是它是一種串行加法器,當位數多時,比如32位的二進制數相加,由于進位逐位從低位向高位傳遞,這會造成相當大的延遲。對于需要快速加法運算的…

shell基本知識

Linux 系統中 shell 的基本知識 1 什么是 shell Shell 是一種命令行解釋器&#xff0c;它為用戶提供了一個向 Linux 內核發送請求以便運行程序的界面系統級程序。用戶可以用 shell 來啟動、掛起、停止甚至是編寫一些程序。 2 Linux 啟動過程 Linux 系統的啟動過程可以概括為…

tomcat篇---第四篇

系列文章目錄 文章目錄 系列文章目錄前言一、為什么我們將tomcat稱為Web容器或者Servlet容器 ?二、tomcat是如何處理Http請求流程的?三、tomcat結構目錄有哪些?前言 前些天發現了一個巨牛的人工智能學習網站,通俗易懂,風趣幽默,忍不住分享一下給大家。點擊跳轉到網站,這…

【深度挖掘Java性能調優】「底層技術原理體系」深入挖掘和分析如何提升服務的性能以及執行效率(性能三大定律)

深入挖掘和分析如何提升服務的性能以及執行效率 前提介紹知識要點 性能概述教你看懂程序的性能案例介紹性能指標性能的參考指標性能瓶頸&#xff08;木桶原理&#xff09; 性能分析三大定律Amdahl定律計算公式參數解釋案例分析定律總結 Gustafson定律與Amdahl定律相對立Gustafs…

有理函數的積分

1.多項式相除法&#xff1a; 2.分子分母次數帶來的解題思路差異&#xff1a; 1.總體目的&#xff1a;降次 2.分子次數高于分母&#xff0c;采用多項式相除 3.分子次數等于分母&#xff0c;分離常數 4.最終形式&#xff1a;分子次數低分母次數高 3.不同形式的計算方法 4.按類拆…

51單片機數碼管的使用

IO的使用2–數碼管 本文主要涉及51單片機的數碼管的使用 文章目錄 IO的使用2--數碼管一、數碼管的定義與類型1.1 數碼管的原理圖二、 舉個栗子2.1 一個數碼管的底層函數2.2 調用上面的底層函數顯示具體數字 一、數碼管的定義與類型 數碼管是一種用于數字顯示的電子元件&#x…

[強網擬態決賽 2023] Crypto

文章目錄 Bad_rsaClasslcal Bad_rsa 題目描述&#xff1a; from Crypto.Util.number import *f open(flag.txt,rb) m bytes_to_long(f.readline().strip())p getPrime(512) q getPrime(512) e getPrime(8) n p*q phi (p-1)*(q-1) d inverse(e,phi) leak d & ((1…