欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

SpringBoot3實(shí)現(xiàn)上傳圖片并返回路徑讓前端顯示圖片

 更新時(shí)間:2024年12月31日 10:14:39   作者:Harry技術(shù)  
這篇文章主要介紹了SpringBoot3實(shí)現(xiàn)上傳圖片并返回路徑讓前端顯示圖片,文中通過圖文和代碼講解的非常詳細(xì),對大家的學(xué)習(xí)或工作有一定的幫助,需要的朋友可以參考下

Springboot 3 上傳圖片,并返回路徑讓前端顯示圖片

步驟:

1.利用SpringBoot寫一個(gè)圖片上傳接口

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 配置一個(gè)圖片上傳地址,方便后續(xù)更改路徑

upload:
  # 圖片保存路徑
  path: E:\img

寫一個(gè)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 "上傳圖片格式錯(cuò)誤,請重新選擇!";
            }

            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模擬圖片上傳,并在瀏覽器中訪問打開

有的小伙伴在測試的時(shí)候,可能會出現(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ī)則詳解

    這篇文章主要介紹了mybatis動態(tài)SQL?if的test寫法及規(guī)則詳解,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-01-01
  • Java上轉(zhuǎn)型和下轉(zhuǎn)型對象

    Java上轉(zhuǎn)型和下轉(zhuǎn)型對象

    這篇文章給大家講述了Java上轉(zhuǎn)型和下轉(zhuǎn)型對象的詳細(xì)用法以及相關(guān)的代碼分享,有興趣的朋友可以學(xué)習(xí)下。
    2018-03-03
  • 使用MyBatis攔截器實(shí)現(xiàn)sql查詢權(quán)限動態(tài)修改代碼實(shí)例

    使用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方法上增加一個(gè)注解,在運(yùn)行過程中判斷該注解存在即對sql進(jìn)行修改,需要的朋友可以參考下
    2023-08-08
  • SpringBoot整合Security安全框架實(shí)現(xiàn)控制權(quán)限

    SpringBoot整合Security安全框架實(shí)現(xiàn)控制權(quán)限

    本文主要介紹了SpringBoot整合Security安全框架實(shí)現(xiàn)控制權(quán)限,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-01-01
  • Java利用opencv實(shí)現(xiàn)用字符展示視頻或圖片的方法

    Java利用opencv實(shí)現(xiàn)用字符展示視頻或圖片的方法

    這篇文章主要介紹了Java利用opencv實(shí)現(xiàn)用字符展示視頻或圖片的方法,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-12-12
  • Springboot集成restTemplate過程詳解

    Springboot集成restTemplate過程詳解

    這篇文章主要介紹了Springboot集成restTemplate過程詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-04-04
  • 情人節(jié)寫給女朋友Java Swing代碼程序

    情人節(jié)寫給女朋友Java Swing代碼程序

    這篇文章主要為大家分享了情人節(jié)寫給女朋友的java小程序,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,祝大家每天都是情人節(jié)
    2018-02-02
  • Mybatis源碼解析之mapper接口的代理模式詳解

    Mybatis源碼解析之mapper接口的代理模式詳解

    這篇文章主要介紹了Mybatis源碼解析之mapper接口的代理模式詳解,在mybatis中執(zhí)行sql時(shí)有兩種方式,一種是基于statementId,也就是直接調(diào)用SqlSession的方法,需要的朋友可以參考下
    2023-12-12
  • Java創(chuàng)建多線程的兩種方式對比

    Java創(chuàng)建多線程的兩種方式對比

    在Java中創(chuàng)建線程的方式有兩種,第一種是直接繼承Thead類,另一種是實(shí)現(xiàn)Runable接口。那么這兩種方式孰優(yōu)孰劣呢?這就是本文需要探討的內(nèi)容范疇了,看官們請仔細(xì)向下看
    2014-10-10
  • Java并發(fā)編程中的Exchanger解析

    Java并發(fā)編程中的Exchanger解析

    這篇文章主要介紹了Java并發(fā)編程中的Exchanger解析,Exchanger用于線程間數(shù)據(jù)的交換,它提供一個(gè)同步點(diǎn),在這個(gè)同步點(diǎn),兩個(gè)線程可以交換彼此的數(shù)據(jù),這兩個(gè)線程通過exchange方法交換數(shù)據(jù),如果第一個(gè)線程先執(zhí)行exchange()方法,需要的朋友可以參考下
    2023-11-11

最新評論