最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Springboot實現圖片上傳功能的示例代碼

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

首先對圖片進行UUID 防止圖片被覆蓋以及爬圖

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

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

/**
 * 圖片上傳
 * @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);//目標文件
    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;
}

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

/**
 * 描述:  常量值
 *
 */
@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/

需要注意幾個點

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

看到我們有一個地方是null,點擊藍字 可以看出確實是沒找到我們的文件夾。

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

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

文件生成功,我們再復制url去網頁上看一下

這是因為它這個url地址不能映射到我們的本地目錄,我們去配置SpringBootWebMvcConfig

就能打開了

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

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

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

相關文章

  • java中創(chuàng)建、寫入文件的5種方式

    java中創(chuàng)建、寫入文件的5種方式

    這篇文章主要介紹了java中創(chuàng)建、寫入文件的5種方式,幫助大家更好的理解學習Java io的相關知識,感興趣的朋友可以了解下
    2020-08-08
  • Mybatis返回插入主鍵id的方法

    Mybatis返回插入主鍵id的方法

    這篇文章主要介紹了 Mybatis返回插入主鍵id的方法,在文章底部給大家補充了Mybatis中insert中返回主鍵ID的方法,非常不錯,需要的朋友可以參考下
    2017-04-04
  • java使用枚舉封裝錯誤碼及錯誤信息詳解

    java使用枚舉封裝錯誤碼及錯誤信息詳解

    這篇文章主要介紹了java使用枚舉封裝錯誤碼及錯誤信息,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-12-12
  • Java Jackson之ObjectMapper常用用法總結

    Java Jackson之ObjectMapper常用用法總結

    這篇文章主要給大家介紹了關于Java Jackson之ObjectMapper常用用法的相關資料,ObjectMapper是一個Java庫,用于將JSON字符串轉換為Java對象或將Java對象轉換為JSON字符串,需要的朋友可以參考下
    2024-01-01
  • MAC算法之消息摘要算法HmacMD5的實現

    MAC算法之消息摘要算法HmacMD5的實現

    這篇文章主要介紹了MAC算法之消息摘要算法HmacMD5的實現的相關資料,這里提供實例,幫助大家學習理解這部分知識,需要的朋友可以參考下
    2017-08-08
  • ssm框架上傳圖片保存到本地和數據庫示例

    ssm框架上傳圖片保存到本地和數據庫示例

    本篇文章主要介紹了ssm框架上傳圖片保存到本地和數據庫示例,主要使用了Spring+SpringMVC+MyBatis框架集合,有興趣的可以了解一下。
    2017-03-03
  • Springcloud Config配置中心使用與相關介紹

    Springcloud Config配置中心使用與相關介紹

    springcloud config是一個解決分布式系統(tǒng)的配置管理方案。它包含了 client和server兩個部分,server端提供配置文件的存儲、以接口的形式將配置文件的內容提供出去,client端通過接口獲取數據、并依據此數據初始化自己的應用
    2022-09-09
  • Java使用Graphics2D繪制SVG和PNG的方法

    Java使用Graphics2D繪制SVG和PNG的方法

    Java提供了許多圖形處理類和方法,如Graphics2D、AffineTransform、Stroke等,這些都可以用于繪制SVG圖像,Graphics2D是Java中用于繪制2D圖形的類,本文給大家介紹如何使用Graphics2D繪制SVG和PNG,需要的朋友可以參考下
    2023-06-06
  • Java 基礎 byte[]與各種數據類型互相轉換的簡單示例

    Java 基礎 byte[]與各種數據類型互相轉換的簡單示例

    這篇文章主要介紹了Java 基礎 byte[]與各種數據類型互相轉換的簡單示例的相關資料,這里對byte[]類型對long,int,double,float,short,cahr,object,string類型相互轉換的實例,需要的朋友可以參考下
    2017-01-01
  • Spring?Boot條件注解之@ConditionalOnProperty完全解析

    Spring?Boot條件注解之@ConditionalOnProperty完全解析

    這篇文章主要介紹了SpringBoot中的@ConditionalOnProperty注解,通過配置文件屬性值控制Bean或配置類的加載,實現功能開關和環(huán)境配置,文中通過代碼介紹的非常詳細,需要的朋友可以參考下
    2025-02-02

最新評論

乐都县| 江津市| 巴彦淖尔市| 临沂市| 西华县| 孟津县| 新闻| 广河县| 郁南县| 泰来县| 遂平县| 平凉市| 柳林县| 深水埗区| 通山县| 于田县| 高尔夫| 卓资县| 乌恰县| 永靖县| 青阳县| 阳曲县| 太保市| 肇东市| 梅河口市| 巴里| 墨脱县| 嘉荫县| 奉节县| 唐海县| 郑州市| 台北县| 阳泉市| 社会| 汝州市| 房山区| 莱芜市| 济南市| 绥阳县| 崇仁县| 临西县|