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

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

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

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

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

開發(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,點擊藍字 可以看出確實是沒找到我們的文件夾。

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

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

文件生成功,我們再復制url去網(wǎng)頁上看一下

這是因為它這個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實現(xiàn)圖片上傳功能的示例代碼的文章就介紹到這了,更多相關(guān)Springboot圖片上傳內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評論