Puoi accedere a tempfile in Spring eseguendo il casting se la classe dell'interfaccia MultipartFileè CommonsMultipartFile.
public File getTempFile(MultipartFile multipartFile)
{
CommonsMultipartFile commonsMultipartFile = (CommonsMultipartFile) multipartFile;
FileItem fileItem = commonsMultipartFile.getFileItem();
DiskFileItem diskFileItem = (DiskFileItem) fileItem;
String absPath = diskFileItem.getStoreLocation().getAbsolutePath();
File file = new File(absPath);
if (!file.exists()) {
file.createNewFile();
multipartFile.transferTo(file);
}
return file;
}
Per sbarazzarsi del trucco con file inferiori a 10240 byte, la maxInMemorySizeproprietà può essere impostata a 0 in @Configuration @EnableWebMvcclasse. Dopodiché, tutti i file caricati verranno archiviati su disco.
@Bean(name = "multipartResolver")
public CommonsMultipartResolver createMultipartResolver() {
CommonsMultipartResolver resolver = new CommonsMultipartResolver();
resolver.setDefaultEncoding("utf-8");
resolver.setMaxInMemorySize(0);
return resolver;
}
MultipartFile.transferTo()?