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

SpringBoot上傳文件并配置本地資源映射來訪問文件的實例代碼

 更新時間:2021年04月23日 10:54:39   作者:weixin_44953227  
這篇文章主要介紹了SpringBoot上傳文件并配置本地資源映射來訪問文件的實例代碼,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下

1.準備工作

1、新建一個SpringBoot項目加上web依賴, 所有依賴

<dependency>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-web</artifactId>
</dependency>

<dependency>
	<groupId>org.thymeleaf</groupId>
	<artifactId>thymeleaf-spring5</artifactId>
</dependency>

<dependency>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-test</artifactId>
	<scope>test</scope>
</dependency>

2、application.properties

# 上傳文件總的最大值
spring.servlet.multipart.max-request-size=10MB
#spring.servlet.multipart.max-request-size=10KB
# 單個文件的最大值
spring.servlet.multipart.max-file-size=10MB
#spring.servlet.multipart.max-file-size=10KB

# 文件上傳路徑, 當前項目根目錄下的 uploadFile 目錄
pro.uploadPath=uploadFile

3、新建文件上傳的靜態(tài)文件 index.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>文件上傳</title>
</head>
    <body>
        <h1>文件上傳</h1>
        <form method="post" action="/file/upload" enctype="multipart/form-data">
            <input type="file" name="file"><br>
            <input type="submit" value="提交">
        </form>
    </body>
</html>

2. 配置本地資源映射路徑 addResourceHandlers

package com.pro.conf;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;

@Configuration
public class WebMvcConf implements WebMvcConfigurer {
    @Value("${pro.uploadPath}")
    private String uploadPath;

    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        registry.addResourceHandler(uploadPath + "/**") // 添加訪問路徑
                // file: 當前項目根目錄, 映射到真實的路徑下的 uploadPath(變量)目錄下
                .addResourceLocations("file:" + uploadPath + "/");
    }
}

3.上傳代碼

package com.pro.controller;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.util.ResourceUtils;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.multipart.MultipartHttpServletRequest;

import javax.servlet.http.HttpServletRequest;
import java.io.*;
import java.text.SimpleDateFormat;
import java.util.*;

@RestController
public class UploadController {
    @Value("${pro.uploadPath}")
    private String uploadPath;

    /**
     * 獲取文件路徑
     * @param request 請求體
     * @param fileName 文件名稱
     * @return 文件路徑
     */
    public String getUploadPath(HttpServletRequest request, String fileName) {
        return request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort() + "/" + uploadPath + "/" + fileName;
    }

    // 文件上傳, 上傳到當前項目根目錄下的 uploadFile 目錄
    @RequestMapping("/file/upload")
    public Object upload(@RequestParam("file") MultipartFile multipartFile, HttpServletRequest request) {
        Map<String, Object> map = new HashMap();
        map.put("msg", "上傳成功");

        if (multipartFile.isEmpty()) {
            map.put("msg", "空文件");
            return map;
        }

        // 獲取文件名
        String fileName = multipartFile.getOriginalFilename();
        if ("".equals(fileName)) {
            map.put("msg", "文件名不能為空");
            return map;
        }
        System.out.println("上傳文件原始的名字: " + fileName);

        // 使用uuid生成新文件名
        String newFileName = UUID.randomUUID().toString().replaceAll("-", "") + fileName.substring(fileName.lastIndexOf("."), fileName.length());
        System.out.println("保存的文件的新名字: " + newFileName);

        // 獲取年月日的日期格式
        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
        String format = simpleDateFormat.format(new Date());

        // 生成以日期分割的文件路徑
        File readPath = new File(uploadPath + File.separator + format);
        System.out.println("存放的文件夾: " + readPath);
        System.out.println("存放文件的絕對路徑: " + readPath.getAbsolutePath());
        // 判斷文件夾是否存在
        if (!readPath.isDirectory()) {
            // 創(chuàng)建文件夾
            readPath.mkdirs();
        }

        // 文件真實的保存路徑
        File file = new File(readPath.getAbsolutePath() + File.separator + newFileName);
        try {
            multipartFile.transferTo(file);

            // 獲取存儲路徑
            String filePath = getUploadPath(request, format + "/" + newFileName);
            map.put("path", filePath);
        } catch (IOException e) {
            e.printStackTrace();
            map.put("msg", "上傳失敗");
        }

        return map;
    }
}

到此這篇關(guān)于SpringBoot上傳文件并配置本地資源映射來訪問文件的文章就介紹到這了,更多相關(guān)SpringBoot上傳文件資源映射內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Java根據(jù)日期計算星期幾的四種方法

    Java根據(jù)日期計算星期幾的四種方法

    在我們?nèi)粘I(yè)務(wù)代碼中,經(jīng)常要用到星期幾,下面這篇文章主要給大家介紹了關(guān)于Java根據(jù)日期計算星期幾的四種方法,文中通過代碼將每種實現(xiàn)的非常詳細,需要的朋友可以參考下
    2023-09-09
  • java構(gòu)造方法的互相調(diào)用方式

    java構(gòu)造方法的互相調(diào)用方式

    這篇文章主要介紹了java構(gòu)造方法的互相調(diào)用方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-03-03
  • Java中zip的壓縮和解壓縮的實現(xiàn)代碼

    Java中zip的壓縮和解壓縮的實現(xiàn)代碼

    這篇文章主要介紹了Java中zip的壓縮和解壓縮的實現(xiàn)代碼,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-02-02
  • IntelliJ IDEA優(yōu)化配置的實現(xiàn)

    IntelliJ IDEA優(yōu)化配置的實現(xiàn)

    這篇文章主要介紹了IntelliJ IDEA優(yōu)化配置的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-07-07
  • 鴻蒙HarmonyOS App開發(fā)造輪子之自定義圓形圖片組件的實例代碼

    鴻蒙HarmonyOS App開發(fā)造輪子之自定義圓形圖片組件的實例代碼

    這篇文章主要介紹了鴻蒙HarmonyOS App開發(fā)造輪子之自定義圓形圖片組件,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-01-01
  • 淺談Java springboot日志管理

    淺談Java springboot日志管理

    這篇文章主要介紹了淺談Java springboot日志管理,文中有非常詳細的代碼示例,對正在學習Java的小伙伴們有很好的幫助喲,需要的朋友可以參考下
    2021-05-05
  • SpringBoot自動裝配原理詳解

    SpringBoot自動裝配原理詳解

    這篇文章主要介紹了SpringBoot自動裝配原理的相關(guān)資料,幫助大家更好的理解和學習使用SpringBoot框架,感興趣的朋友可以了解下
    2021-03-03
  • java課程設(shè)計做一個多人聊天室(socket+多線程)

    java課程設(shè)計做一個多人聊天室(socket+多線程)

    這篇文章主要介紹了我的java課程設(shè)計一個多人聊天室(socket+多線程)本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-08-08
  • Java的string類為什么是不可變的

    Java的string類為什么是不可變的

    這篇文章主要介紹了Java的string類為什么是不可變的,總結(jié)了三個答案,需要的朋友可以參考下
    2014-04-04
  • java 實現(xiàn)讀取clob

    java 實現(xiàn)讀取clob

    這篇文章主要介紹了java 如何實現(xiàn)讀取clob,幫助大家更好的理解和使用Java,感興趣的朋友可以了解下
    2020-10-10

最新評論

郓城县| 巴青县| 普定县| 凌海市| 大新县| 祥云县| 萝北县| 南投县| 徐汇区| 盐池县| 高淳县| 梁平县| 阜阳市| 金川县| 保定市| 方山县| 新余市| 吉木乃县| 蛟河市| 栾川县| 临西县| 西盟| 嘉荫县| 明星| 武汉市| 宁津县| 江油市| 临泉县| 揭西县| 东安县| 邵东县| 盐源县| 革吉县| 赤壁市| 太保市| 五家渠市| 安泽县| 大石桥市| 湖北省| 清苑县| 达孜县|