ファイルアップロードとJSON本体の両方を構成部分として含むマルチパートメッセージを受け入れるSpring MVC RESTサービスを実装しました。Multipart Spring MVCファイルアップロードで.tmpファイルが削除されない
マイコントローラー:
@RestController
public class MyController {
@Autowired
private MyService myService;
@RequestMapping(value = "/publish", method = RequestMethod.POST,
consumes = "multipart/form-data", produces = "application/json")
public PublishContentResponse publishContent(@RequestPart("json") PublishContentRequest request, @RequestPart("file") MultipartFile file) throws IOException {
PublishContentResponse response = myService.publishContent(request, file);
return response;
}
}
私のサーブレット初期化子:
public class MyServletInitializer extends AbstractAnnotationConfigDispatcherServletInitializer {
@Override
protected Class<?>[] getRootConfigClasses() {
return new Class[]{};
}
@Override
protected Class<?>[] getServletConfigClasses() {
return new Class[]{MyConfig.class};
}
@Override
protected String[] getServletMappings() {
return new String[]{"/mypath/*"};
}
@Override
protected void customizeRegistration(ServletRegistration.Dynamic registration) {
registration.setMultipartConfig(getMultipartConfigElement());
}
private MultipartConfigElement getMultipartConfigElement() {
loadServletProperties();
MultipartConfigElement multipartConfigElement = new MultipartConfigElement("c:/temp/", 5242880, 20971520, 0);
return multipartConfigElement;
}
}
マイ設定:
@Configuration
@ComponentScan
@EnableWebMvc
public class MyConfig extends WebMvcConfigurerAdapter {
@Override
public void configureDefaultServletHandling(final DefaultServletHandlerConfigurer configurer) {
configurer.enable();
}
@Bean
public MultipartResolver multipartResolver() {
return new StandardServletMultipartResolver();
}
}
私の問題は一時的な場所が定義されていることである。ここ関わる主なクラスがありますサーブレットイニシャライザ(C:/ temp /)には、この要求があるたびに作成される.tmpフォルダが含まれていますサービスと削除されることはありません。メモ帳でそれらを開くと、要求に送信されたJSONのプレーンテキストコピーのみが含まれていて、アップロードされたファイルのバイトは含まれていないようです。私の人生は、処理後にこれらのファイルが消えるようにする方法を考え出すことができません。今のところ私はそれぞれの呼び出しの後に FileUtils.cleanDirectory( "C /:temp /")を使用することに頼っていましたが、私はこの解決策に全く満足していません。誰も私がこれらの.tmpファイルを削除するために何ができるか考えている?