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

Springboot實(shí)現(xiàn)圖片上傳功能的示例代碼

 更新時(shí)間:2022年09月27日 11:04:59   作者:天海奈奈  
本篇文章主要介紹了SpringBoot如何實(shí)現(xiàn)圖片上傳功能,文中通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧

首先對(duì)圖片進(jìn)行UUID 防止圖片被覆蓋以及爬圖

UUID的生成規(guī)則:日期時(shí)間,MAC地址,HashCode,隨機(jī)數(shù)(多種之一)

開發(fā)上傳接口,兩處紅字意思是生成文件夾和生成目標(biāo)文件,

/**
 * 圖片上傳
 * @param httpServletRequest 用來獲取url
 * @param file  上傳的文件
 * @return ApiRestResponse
 */
@PostMapping("/admin/upload/file")
public ApiRestResponse upload(HttpServletRequest httpServletRequest,
        @RequestParam("file") MultipartFile file) {
    //獲取后綴
    String fileName = file.getOriginalFilename();
    String suffixName = fileName.substring(fileName.lastIndexOf("."));
    //生成文件名稱UUID
    UUID uuid = UUID.randomUUID();
    String newFileName = uuid.toString() + suffixName;
    //創(chuàng)建文件
    File fileDirectory = new File(Constant.FILE_UPLOAD_DIR);//文件夾
    File destFile = new File(Constant.FILE_UPLOAD_DIR + newFileName);//目標(biāo)文件
    if (!fileDirectory.exists()) {
        if (!fileDirectory.mkdir()) {
            throw new SpringLearnException(SpringLearnExceptionEnum.MKDIR_FAILED);
        }
    }
    try {
        file.transferTo(destFile);
    } catch (IOException e) {
        e.printStackTrace();
    }
    try {
        return ApiRestResponse
                .success(getHost(new URI(httpServletRequest.getRequestURL() + "")) + "/images/"
                        + newFileName);
    } catch (URISyntaxException e) {
        return ApiRestResponse.error(SpringLearnExceptionEnum.UPLOAD_FAILED);
    }
}

private URI getHost(URI uri) {
    URI effectiveURI;
    try {
        effectiveURI = new URI(uri.getScheme(), uri.getUserInfo(), uri.getHost(), uri.getPort(),
                null, null, null);
    } catch (URISyntaxException e) {
        effectiveURI = null;
    }
    return effectiveURI;
}

由于生成文件時(shí)傳入的時(shí)常量也就是我們生成文件的地址,所以需要去定義常量

/**
 * 描述:  常量值
 *
 */
@Component
public class Constant {



    public static String FILE_UPLOAD_DIR;

    @Value("${file.upload.dir}")
    public void setFileUploadDir(String fileUploadDir) {
        FILE_UPLOAD_DIR = fileUploadDir;
    }


}

定義好之后去配置文件application.properties中書寫具體保存在哪里[file.upload.dir]與@Vlue里面的值保持一致。

file.upload.dir=D:/pactures/

需要注意幾個(gè)點(diǎn)

由于常量是static,我們直接將注解加載常量上方是無法找到我們定義的文件地址的

看到我們有一個(gè)地方是null,點(diǎn)擊藍(lán)字 可以看出確實(shí)是沒找到我們的文件夾。

所以我們應(yīng)當(dāng)在下方新寫一個(gè)方法去寫常量的值,并將@Value("${file.upload.dir}")注解加在方法上方,并且我們需要在類上加@Component注解。

現(xiàn)在我們就能上傳圖片了,我們先去文件夾中看一下

文件生成功,我們?cè)購(gòu)?fù)制url去網(wǎng)頁(yè)上看一下

這是因?yàn)樗@個(gè)url地址不能映射到我們的本地目錄,我們?nèi)ヅ渲肧pringBootWebMvcConfig

就能打開了

/**
 * 描述:     配置地址映射
 */
@Configuration
public class SpringLearnWebMvcConfig implements WebMvcConfigurer {

    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        registry.addResourceHandler("/images/**")
                .addResourceLocations("file:" + Constant.FILE_UPLOAD_DIR);//把url地址映射到本地目錄
       
    }
}

到此這篇關(guān)于Springboot實(shí)現(xiàn)圖片上傳功能的示例代碼的文章就介紹到這了,更多相關(guān)Springboot圖片上傳內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • SpringCloud應(yīng)用骨架開發(fā)詳解

    SpringCloud應(yīng)用骨架開發(fā)詳解

    這篇文章主要介紹了SpringCloud應(yīng)用骨架開發(fā)詳解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-09-09
  • IntelliJ Idea SpringBoot 數(shù)據(jù)庫(kù)增刪改查實(shí)例詳解

    IntelliJ Idea SpringBoot 數(shù)據(jù)庫(kù)增刪改查實(shí)例詳解

    SpringBoot 是 SpringMVC 的升級(jí),對(duì)于編碼、配置、部署和監(jiān)控,更加簡(jiǎn)單。這篇文章主要介紹了IntelliJ Idea SpringBoot 數(shù)據(jù)庫(kù)增刪改查實(shí)例,需要的朋友可以參考下
    2018-02-02
  • java 發(fā)送帶Basic Auth認(rèn)證的http post請(qǐng)求實(shí)例代碼

    java 發(fā)送帶Basic Auth認(rèn)證的http post請(qǐng)求實(shí)例代碼

    下面小編就為大家?guī)硪黄猨ava 發(fā)送帶Basic Auth認(rèn)證的http post請(qǐng)求實(shí)例代碼。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2016-11-11
  • elasticsearch元數(shù)據(jù)構(gòu)建metadata及routing類源碼分析

    elasticsearch元數(shù)據(jù)構(gòu)建metadata及routing類源碼分析

    這篇文章主要為大家介紹了elasticsearch元數(shù)據(jù)構(gòu)建metadata?routing類內(nèi)部源碼分析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-04-04
  • Spring中@Async注解實(shí)現(xiàn)異步調(diào)詳解

    Spring中@Async注解實(shí)現(xiàn)異步調(diào)詳解

    在本篇文章里小編給大家分享的是關(guān)于Spring中@Async注解實(shí)現(xiàn)異步調(diào)詳解內(nèi)容,需要的朋友們可以學(xué)習(xí)下。
    2020-04-04
  • Java的RxJava庫(kù)操作符的用法及實(shí)例講解

    Java的RxJava庫(kù)操作符的用法及實(shí)例講解

    RxJava由于提供異步和基于事件的支持在Android開發(fā)者中獲得了不少人氣,這里我們就來看一下Java的RxJava庫(kù)操作符的用法及實(shí)例講解,需要的朋友可以參考下
    2016-06-06
  • java 如何查看jar包加載順序

    java 如何查看jar包加載順序

    這篇文章主要介紹了java 如何查看jar包加載順序,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-12-12
  • SpringBoot工程中Spring Security應(yīng)用實(shí)踐記錄流程分析

    SpringBoot工程中Spring Security應(yīng)用實(shí)踐記錄流程分析

    Spring Security是一個(gè)能夠?yàn)榛赟pring的企業(yè)應(yīng)用系統(tǒng)提供聲明式的安全訪問控制解決方案的安全框架。這篇文章主要介紹了SpringBoot工程中Spring Security應(yīng)用實(shí)踐,需要的朋友可以參考下
    2021-09-09
  • 使用spring注入枚舉類型作為參數(shù)

    使用spring注入枚舉類型作為參數(shù)

    這篇文章主要介紹了使用spring注入枚舉類型作為參數(shù),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-09-09
  • Jersey Restful接口如何獲取參數(shù)的問題

    Jersey Restful接口如何獲取參數(shù)的問題

    這篇文章主要介紹了Jersey Restful接口如何獲取參數(shù)的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-06-06

最新評(píng)論