SpringBoot3實(shí)現(xiàn)上傳圖片并返回路徑讓前端顯示圖片
Springboot 3 上傳圖片,并返回路徑讓前端顯示圖片
步驟:
1.利用SpringBoot寫一個圖片上傳接口
2.接收前端傳遞過來的圖片并保存到本地指定位置。
3.前端(瀏覽器)可以通過url訪問上傳過的圖片
創(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 配置一個圖片上傳地址,方便后續(xù)更改路徑
upload: # 圖片保存路徑 path: E:\img
寫一個FileController用來接收前端提交的圖片文件,并把圖片保存到服務(wù)器的指定位置
/**
* @author harry
* @公眾號 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 "文件為空,請重新選擇!";
}
// 上傳的圖片
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)過處理后得到:avatar.123_1661136943533.png
fileName = prefixName + "_" + System.currentTimeMillis() + suffixName;
} else {
return "上傳圖片格式錯誤,請重新選擇!";
}
String savePath = path.getPath() + File.separator + fileName;
File saveFile = new File(savePath);
// 將上傳的文件復(fù)制到指定目錄
FileCopyUtils.copy(file.getBytes(), saveFile);
// 返回給前端的圖片保存路徑;前臺可以根據(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
* @公眾號 Harry技術(shù)
*/
@Configuration
public class InterceptorConfig implements WebMvcConfigurer {
@Value("${upload.path}")
private String uploadPath;
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
// images 是訪問圖片資源的前綴,比如要訪問test1.png
// 則全路徑為:http://localhost:端口號/images/test1.png
registry.addResourceHandler("/images/**")
//此處為設(shè)置服務(wù)端存儲圖片的路徑(前端上傳到后臺的圖片保存位置)
.addResourceLocations("file:/" + uploadPath);
}
}
編寫前端進(jìn)行測試,這里采用Apifox模擬圖片上傳,并在瀏覽器中訪問打開


有的小伙伴在測試的時候,可能會出現(xiàn)打不開的情況,那你檢查一下本地路徑地址,不要有中文目錄?。?!
到此這篇關(guān)于SpringBoot3實(shí)現(xiàn)上傳圖片并返回路徑讓前端顯示圖片的文章就介紹到這了,更多相關(guān)SpringBoot3上傳圖片并返回路徑內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
mybatis動態(tài)SQL?if的test寫法及規(guī)則詳解
這篇文章主要介紹了mybatis動態(tài)SQL?if的test寫法及規(guī)則詳解,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-01-01
使用MyBatis攔截器實(shí)現(xiàn)sql查詢權(quán)限動態(tài)修改代碼實(shí)例
這篇文章主要介紹了使用MyBatis攔截器實(shí)現(xiàn)sql查詢權(quán)限動態(tài)修改代碼實(shí)例,為了不耦合,現(xiàn)在的方案是在需要鑒權(quán)的Mybatis?Mapper方法上增加一個注解,在運(yùn)行過程中判斷該注解存在即對sql進(jìn)行修改,需要的朋友可以參考下2023-08-08
SpringBoot整合Security安全框架實(shí)現(xiàn)控制權(quán)限
本文主要介紹了SpringBoot整合Security安全框架實(shí)現(xiàn)控制權(quán)限,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下2022-01-01
Java利用opencv實(shí)現(xiàn)用字符展示視頻或圖片的方法
這篇文章主要介紹了Java利用opencv實(shí)現(xiàn)用字符展示視頻或圖片的方法,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-12-12

