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

springboot3生成本地文件url的實現(xiàn)示例

 更新時間:2024年01月10日 09:07:33   作者:燈籠只能來教室體驗生活  
本文主要介紹了springboot3生成本地文件url的實現(xiàn)示例,從而提供一種高效的文件管理方式,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

流程

  • avatar_dir:請求圖片在服務(wù)端的存放路徑
  • user.dir:項目根目錄

在這里插入圖片描述

效果

在這里插入圖片描述

靜態(tài)資源訪問

在這里插入圖片描述

application.yml
設(shè)置靜態(tài)文件存儲路徑

custom:
  upload:
    avatar_dir: ${user.dir}/avatar_dir/
    avatar_dir_name: avatar_dir

FileUploadConfig
application.yml 信息讀取配置類

@Data
@Configuration
@ConfigurationProperties(prefix = "custom.upload")
public class FileUploadConfig {
   private String avatarDir;
   private String avatarDirName;
}

靜態(tài)資源訪問配置類

@Configuration
public class WebConfig implements WebMvcConfigurer {
    @Autowired
    FileUploadConfig uploadConfig;

    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        File file = new File(uploadConfig.getAvatarDir());
        String path = "file:" + file + File.separator;
        // 匹配 http://ip:port/avatar_dir/ 下的所有文件
        registry.addResourceHandler("/avatar_dir/**")
                // 實際靜態(tài)文件地址
                .addResourceLocations(path);
    }
}

Service

@Service
public interface FileService {
	// 獲取圖像 Url
    public Result<String> getImageUrl(User user, String host, int port);
	// 路徑拼接
    public String joinPaths(String... paths);
}

ServiceImpl

http://ip:port/靜態(tài)文件存儲路徑/文件名

String imageUrl = String.format(
	"http://%s:%d/%s", host, port, joinPaths(
  								  		uploadConfig.getAvatarDirName(), 
  								  		avatar
  							  		)
);

實現(xiàn)代碼

@Service
public class FileServiceImpl implements FileService {
    @Autowired
    FileUploadConfig uploadConfig;

    @Autowired
    IUserService userService;

	// 路徑拼接
    @Override
    public String joinPaths(String... paths) {
        Path resultPath = Paths.get("");
        for (String path : paths) {
            resultPath = resultPath.resolve(path);
        }
        return resultPath.toString();
    }
    
    // 判斷文件是否存在
    private Boolean isUserAvatarExists(String avatar) {
        String path = joinPaths(uploadConfig.getAvatarDir(), avatar);
        File filePath = new File(path);
        return filePath.exists();
    }

	// 獲取圖像 Url
    @Override
    public Result<String> getImageUrl(User user, String host, int port) {
    	// 用戶頭像的文件名唯一,并保存在了數(shù)據(jù)庫中,avatar = xxx.png
        String avatar = this.userService.getById(user.getUserId()).getAvatar();
        
        if (isUserAvatarExists(avatar)) {
            String imageUrl = String.format("http://%s:%d/%s", host, port, joinPaths(uploadConfig.getAvatarDirName(), avatar));
            return Result.successfulResult("獲取成功", imageUrl);
        }
        return Result.errorResult("文件丟失");
    }
}

Controller

@Tag(name = "文件上傳接口")
@RestController
@RequestMapping("/sign/file")
public class FileUploadController {
    @Autowired
    FileService fileService;

    @Operation(summary = "獲取圖片 URL")
    @PostMapping("/image/get")
    public Result<String> getImageUrl(@RequestBody User user) {
        URI currentUri = ServletUriComponentsBuilder.fromCurrentRequestUri().build().toUri();
        // currentUri.getHost() 獲取請求 IP,如 localhost
        // currentUri.getPort() 獲取請求 端口號,如 8080
        return fileService.getImageUrl(user, currentUri.getHost(), currentUri.getPort());
    }
}

到此這篇關(guān)于springboot3生成本地文件url的實現(xiàn)示例的文章就介紹到這了,更多相關(guān)springboot3生成本地文件url內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家! 

相關(guān)文章

  • Java基礎(chǔ)之淺談hashCode()和equals()

    Java基礎(chǔ)之淺談hashCode()和equals()

    今天給大家?guī)淼氖顷P(guān)于Java基礎(chǔ)的相關(guān)知識,文章圍繞著hashCode()和equals()展開,文中有非常詳細(xì)的介紹及代碼示例,需要的朋友可以參考下
    2021-06-06
  • java如何實現(xiàn)自動生成數(shù)據(jù)庫設(shè)計文檔

    java如何實現(xiàn)自動生成數(shù)據(jù)庫設(shè)計文檔

    以前我們還需要手寫數(shù)據(jù)庫設(shè)計文檔、現(xiàn)在可以通過引入screw核心包來實現(xiàn)Java?數(shù)據(jù)庫文檔一鍵生成。本文將具體介紹一下如何通過java自動生成數(shù)據(jù)庫設(shè)計文檔,需要的朋友可以參考下
    2021-11-11
  • 如何使用@AllArgsConstructor和final 代替 @Autowired

    如何使用@AllArgsConstructor和final 代替 @Autowired

    這篇文章主要介紹了使用@AllArgsConstructor和final 代替 @Autowired方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-09-09
  • Spring之spring-context-indexer依賴詳解

    Spring之spring-context-indexer依賴詳解

    這篇文章主要介紹了Spring之spring-context-indexer依賴詳解,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-11-11
  • Java中關(guān)于字典樹的算法實現(xiàn)

    Java中關(guān)于字典樹的算法實現(xiàn)

    字典樹,又稱單詞查找樹,Trie樹,是一種樹形結(jié)構(gòu),哈希表的一個變種。用于統(tǒng)計,排序和保存大量的字符串,本文針對字典樹給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值
    2021-09-09
  • Spring Boot 整合 MongoDB的示例

    Spring Boot 整合 MongoDB的示例

    這篇文章主要介紹了Spring Boot 整合 MongoDB的示例,幫助大家更好的理解和學(xué)習(xí)spring boot框架,感興趣的朋友可以了解下
    2020-10-10
  • 聊聊Java 成員變量賦值和構(gòu)造方法誰先執(zhí)行的問題

    聊聊Java 成員變量賦值和構(gòu)造方法誰先執(zhí)行的問題

    這篇文章主要介紹了聊聊Java 成員變量賦值和構(gòu)造方法誰先執(zhí)行的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-10-10
  • 詳解SpringBoot如何正確解析日期格式

    詳解SpringBoot如何正確解析日期格式

    這篇文章主要介紹了SpringBoot如何正確解析日期格式,文中給出了兩種解決方案,通過代碼示例講解的非常詳細(xì),對大家的學(xué)習(xí)或工作有一定的幫助,需要的朋友可以參考下
    2024-03-03
  • java模擬發(fā)送form-data的請求方式

    java模擬發(fā)送form-data的請求方式

    這篇文章主要介紹了java模擬發(fā)送form-data的請求方式,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-05-05
  • spring-boot項目啟動遲緩異常排查解決記錄

    spring-boot項目啟動遲緩異常排查解決記錄

    這篇文章主要為大家介紹了spring-boot項目啟動遲緩異常排查解決記錄,突然在本地啟動不起來了,表象特征就是在本地IDEA上運(yùn)行時,進(jìn)程卡住也不退出,應(yīng)用啟動時加載相關(guān)組件的日志也不輸出
    2022-02-02

最新評論

崇文区| 伊川县| 连平县| 淮阳县| 离岛区| 大足县| 吴堡县| 板桥市| 文昌市| 塔城市| 喀喇沁旗| 松溪县| 西峡县| 玉门市| 汉阴县| 乌兰浩特市| 游戏| 方城县| 平安县| 汝州市| 子洲县| 高陵县| 霍山县| 阿城市| 浦城县| 广饶县| 天柱县| 新源县| 山阳县| 孟连| 肇东市| 黄浦区| 德钦县| 白山市| 天镇县| 长顺县| 鸡西市| 错那县| 贵港市| 蚌埠市| 连江县|