1. 程式人生 > 其它 >SpringBoot上傳檔案並對映URL訪問

SpringBoot上傳檔案並對映URL訪問

上傳檔案

@PostMapping("/upload")
    @ApiOperation("檔案上傳")
    public String uploadImg(MultipartFile file){
        if (file.isEmpty()) {
            System.out.println("上傳的檔案為空!");
        }
        // 檔名
        String fileName = file.getOriginalFilename();
        // 獲取檔案字尾名
        String extension = fileName.substring(fileName.indexOf("."));
        // 上傳檔案的路徑
        String uploadFolder = "/tmp/nft/uploads/";
        // 生成一個新的檔名
        fileName = UUID.randomUUID() + extension;
        File dest = new File(uploadFolder + fileName);
        // 檢測檔案目錄是否存在 不存在則建立
        if (!dest.getParentFile().exists()){
            dest.getParentFile().mkdirs();
        }
        try {
            file.transferTo(dest);
        } catch (IOException e) {
            e.printStackTrace();
            throw new CheckException("檔案上傳失敗");
        }
        // 返回虛擬檔案訪問路徑
        return "/upload/" + fileName;
    }
  • 上傳到target目錄下
String uploadFolder = this.getClass().getResource("/").getPath() + "/uploads/"; 
  • 上傳到伺服器目錄下
 String uploadFolder = "/tmp/nft/uploads/";

配置對映

@Configuration
public class UploadConfig implements WebMvcConfigurer {

    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        registry.addResourceHandler("/upload/**").addResourceLocations("file:/tmp/nft/uploads/");
    }

}
  • file:/tmp/nft/uploads/: 對映到伺服器目錄
  • classpath:uploads/:對映到資源目錄