Springbootアップロード画像はバックグラウンドに保存され、保存パスを指定します


1、springboot 2.x
2、application.properties
#       
spring.servlet.multipart.maxFileSize=10Mb
#      
spring.servlet.multipart.maxRequestSize=10Mb

#         :D:\home\capture\5\*.jpg(      )
#  Url:http://ip:port/hg-zhwg/upload/5/*.jpg

#      (window d/e/f , linux /)(  Linux Windows        )
#file.uploadFolder=/
file.uploadFolder=d://
#           (             )
zhwg.captrue.image.path=home/capture/
#             (       )
file.staticAccessPath=/upload/**

クラスを起動するにはmultipartConfigElementメソッドを追加する必要があります
public class HgZhwgApplication {
	@Value("${file.uploadFolder}")
	private String uploadFolder;

    public static void main(String[] args) {
        SpringApplication.run(HgZhwgApplication.class, args);
    }
    
    @Bean
    MultipartConfigElement multipartConfigElement() {
        MultipartConfigFactory factory = new MultipartConfigFactory();
        factory.setLocation(uploadFolder);
        return factory.createMultipartConfig();
    }
}


ブロッカーの構成で、addResourceHandlersメソッドを追加し、アクセスパスを指定します.addInterceptorsメソッドはstaticAccessPathをフィルタリングする必要があります
@Configuration
public class WebMvcConfig implements WebMvcConfigurer {
	@Value("${file.staticAccessPath}")
	private String staticAccessPath;
	
	@Value("${zhwg.captrue.image.path}")
	private String captureImagePath;
	
	@Value("${file.uploadFolder}")
	private String uploadFolder;

	@Bean
	public SecutityInterceptor securityInterceptor() {
		return new SecutityInterceptor();
	}

	@Override
	public void addInterceptors(InterceptorRegistry registry) {
		registry.addInterceptor(securityInterceptor()).addPathPatterns("/**").excludePathPatterns("/login/**")
				.excludePathPatterns("/deviceCmd/**").excludePathPatterns("/image/**")
				.excludePathPatterns(staticAccessPath);

	}

	@Override
	public void addCorsMappings(CorsRegistry registry) {
		registry.addMapping("/**").allowedOrigins("*").allowCredentials(true).allowedMethods("*").maxAge(3600);
	}

	@Override
	public void addResourceHandlers(ResourceHandlerRegistry registry) {
		registry.addResourceHandler(staticAccessPath).addResourceLocations("file:" + uploadFolder + captureImagePath);
	}

}

最後にファイルをアップロードする方法です
@RequestMapping("/recive/{devType}/{cmdLogId}")
	public void reciveCameraCapture(@PathVariable("devType") String devType, @PathVariable("cmdLogId") String cmdLogId,
			@RequestParam("captureImg") MultipartFile captureImg,
			@RequestParam(value = "cameraPreviewId", required = false) Long cameraPreviewId,
			@RequestParam("token") String token, HttpServletRequest request, HttpServletResponse response) {
		if (captureImg == null) {
			return;
		}

		//     
		String filename = captureImg.getOriginalFilename();
		//      
		String prefix = filename.substring(filename.lastIndexOf(".") + 1);
		String destFilename = UUID.randomUUID().toString().replace("-", "") + "." + prefix;
		
		File fileUrl = new File(uploadFolder + captureImagePath + devType);

		if (!fileUrl.exists()) {
			fileUrl.mkdirs();
		}

		File destImage = new File(fileUrl, destFilename);

		logger.debug("       :" + destImage);
		try {
			captureImg.transferTo(destImage);
		} catch (IOException e) {
			logger.error("      ", e);
		}
	}

アクセス:成功springboot 上传图片存储在后台,并指定存储路径_第1张图片