SpringBoot3實(shí)現(xiàn)上傳圖片并返回路徑讓前端顯示圖片
Springboot 3 上傳圖片,并返回路徑讓前端顯示圖片
步驟:
1.利用SpringBoot寫一個(gè)圖片上傳接口
2.接收前端傳遞過(guò)來(lái)的圖片并保存到本地指定位置。
3.前端(瀏覽器)可以通過(guò)url訪問(wèn)上傳過(guò)的圖片
創(chuàng)建項(xiàng)目:
pom.xml 主要依賴
<properties>
<java.version>17</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
</dependencies>
application.yml 配置一個(gè)圖片上傳地址,方便后續(xù)更改路徑
upload: # 圖片保存路徑 path: E:\img
寫一個(gè)FileController用來(lái)接收前端提交的圖片文件,并把圖片保存到服務(wù)器的指定位置
/**
* @author harry
* @公眾號(hào) Harry技術(shù)
*/
@RestController
@RequestMapping("/upload")
public class FileController {
@Value("${upload.path}")
private String uploadPath;
@PostMapping
public String uploadFile(@RequestParam("file") MultipartFile file) {
try {
if (file.isEmpty()) {
return "文件為空,請(qǐng)重新選擇!";
}
// 上傳的圖片
File path = new File(uploadPath);
if (!path.exists()) {
// 創(chuàng)建完整的目錄
path.mkdirs();
}
// 獲取文件原始名(包含后綴名)
String originalName = file.getOriginalFilename();
// 獲取文件名(不包括后綴)
String prefixName = originalName.substring(0, originalName.lastIndexOf("."));
// 獲取文件后綴 (包括.) 例如:.png
String suffixName = originalName.substring(originalName.lastIndexOf("."));
// 這是處理后的新文件名
String fileName;
if (originalName.contains(".")) {
// 示例:avatar.123.png,經(jīng)過(guò)處理后得到:avatar.123_1661136943533.png
fileName = prefixName + "_" + System.currentTimeMillis() + suffixName;
} else {
return "上傳圖片格式錯(cuò)誤,請(qǐng)重新選擇!";
}
String savePath = path.getPath() + File.separator + fileName;
File saveFile = new File(savePath);
// 將上傳的文件復(fù)制到指定目錄
FileCopyUtils.copy(file.getBytes(), saveFile);
// 返回給前端的圖片保存路徑;前臺(tái)可以根據(jù)返回的路徑拼接完整地址,即可在瀏覽器上預(yù)覽該圖片
String dest = "images" + File.separator + fileName;
if (dest.contains("\\")) {
dest = dest.replace("\\", "/");
}
return dest;
} catch (IOException e) {
return e.getMessage();
}
}
}
配置WebMvcConfigurer,在其addResourceHandlers方法中設(shè)置資源映射
/**
* @author harry
* @公眾號(hào) Harry技術(shù)
*/
@Configuration
public class InterceptorConfig implements WebMvcConfigurer {
@Value("${upload.path}")
private String uploadPath;
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
// images 是訪問(wèn)圖片資源的前綴,比如要訪問(wèn)test1.png
// 則全路徑為:http://localhost:端口號(hào)/images/test1.png
registry.addResourceHandler("/images/**")
//此處為設(shè)置服務(wù)端存儲(chǔ)圖片的路徑(前端上傳到后臺(tái)的圖片保存位置)
.addResourceLocations("file:/" + uploadPath);
}
}
編寫前端進(jìn)行測(cè)試,這里采用Apifox模擬圖片上傳,并在瀏覽器中訪問(wèn)打開


有的小伙伴在測(cè)試的時(shí)候,可能會(huì)出現(xiàn)打不開的情況,那你檢查一下本地路徑地址,不要有中文目錄?。?!
到此這篇關(guān)于SpringBoot3實(shí)現(xiàn)上傳圖片并返回路徑讓前端顯示圖片的文章就介紹到這了,更多相關(guān)SpringBoot3上傳圖片并返回路徑內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Java單機(jī)環(huán)境實(shí)現(xiàn)定時(shí)任務(wù)技術(shù)
這篇文章主要介紹了Java單機(jī)環(huán)境實(shí)現(xiàn)定時(shí)任務(wù)技術(shù),文章內(nèi)容介紹詳細(xì),具有一定的參考價(jià)值,需要的小伙伴可以參考一下2022-04-04
Springmvc處理ajax請(qǐng)求并返回json數(shù)據(jù)
這篇文章主要介紹了Springmvc處理ajax請(qǐng)求并返回json數(shù)據(jù),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-07-07
用SpringBoot Admin監(jiān)控SpringBoot程序
這篇文章主要介紹了用SpringBoot Admin監(jiān)控SpringBoot程序,幫助大家更好的理解和使用springboot框架,感興趣的朋友可以了解下2020-10-10
nacos使用外部數(shù)據(jù)庫(kù)部署到k8s實(shí)踐
Nacos 是一個(gè)用于發(fā)現(xiàn)、配置和管理微服務(wù)的平臺(tái),提供了一系列簡(jiǎn)單易用的特性,幫助快速實(shí)現(xiàn)動(dòng)態(tài)服務(wù)發(fā)現(xiàn)、服務(wù)配置、服務(wù)元數(shù)據(jù)及流量管理,通過(guò)簡(jiǎn)單的安裝和部署,可以快速構(gòu)建、交付和管理微服務(wù)平臺(tái)2026-02-02
POI對(duì)Excel自定義日期格式的讀取(實(shí)例代碼)
下面小編就為大家?guī)?lái)一篇POI對(duì)Excel自定義日期格式的讀取(實(shí)例代碼)。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2016-11-11
springboot訪問(wèn)請(qǐng)求404的原因及解決辦法
在使用Spring Boot開發(fā)應(yīng)用程序時(shí),有時(shí)可能會(huì)遇到訪問(wèn)請(qǐng)求出現(xiàn)404錯(cuò)誤的情況,即請(qǐng)求的資源未找到,這篇文章主要給大家介紹了關(guān)于springboot訪問(wèn)請(qǐng)求404的原因及解決辦法,需要的朋友可以參考下2023-09-09
SpringBoot整合WebSocket實(shí)現(xiàn)聊天室流程全解
WebSocket協(xié)議是基于TCP的一種新的網(wǎng)絡(luò)協(xié)議。本文將通過(guò)SpringBoot集成WebSocket實(shí)現(xiàn)簡(jiǎn)易聊天室,對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,感興趣的可以了解一下2023-01-01
SpringBoot構(gòu)建Restful service完成Get和Post請(qǐng)求
這篇文章主要介紹了SpringBoot構(gòu)建Restful service完成Get和Post請(qǐng)求的示例代碼,感興趣的朋友一起看看吧2017-08-08

