这些天我正在开发一个提供上传图像功能的rest API。一切都很完美,但我的后端服务器位置充满了图像副本。看起来弹簧保留了上传的每个图像的本地副本。是否有任何选项可以禁用本地副本的保存。我快速查看了文档,我可以在下面找到多部分文件的属性。
# MULTIPART (MultipartProperties)
spring.servlet.multipart.enabled=true # Whether to enable support of
multipart uploads.
spring.servlet.multipart.file-size-threshold=0 # Threshold after which files
are written to disk. Values can use the suffixes "MB" or "KB" to indicate
megabytes or kilobytes, respectively.
spring.servlet.multipart.location= # Intermediate location of uploaded
files.
spring.servlet.multipart.max-file-size=1MB # Max file size. Values can use
the suffixes "MB" or "KB" to indicate megabytes or kilobytes, respectively.
spring.servlet.multipart.max-request-size=10MB # Max request size. Values
can use the suffixes "MB" or "KB" to indicate megabytes or kilobytes,
respectively.
spring.servlet.multipart.resolve-lazily=false # Whether to resolve the
multipart request lazily at the time of file or parameter access.
有一个位置我们可以告诉系统复制本地副本,但是没有选项可以禁用它。你们有什么建议吗?我们是否需要有一个单独的程序来清除这些本地图像副本并节省空间?
谢谢, Keth
答案 0 :(得分:1)
我知道这个主题有点旧,但这是我在Google搜索过程中第一个出现的主题。
今天,我面临着同样的问题。 经过一番研究,事实证明Spring是自动进行此清理的。 在我的情况下,由于没有忘记关闭与接收到的文件有关的流,所以清理没有完成。
希望对您有帮助。
答案 1 :(得分:0)
我将多部分转换为Java File对象,并在使用后手动将其删除
public static File convertMultiPartToFile(MultipartFile file) throws IOException {
File convFile = new File(file.getOriginalFilename());
FileOutputStream fos = new FileOutputStream(convFile);
fos.write(file.getBytes());
fos.close();
return convFile;
}
然后称为file.delete方法
File tempFile = FileUtils.convertMultiPartToFile(file);
logger.info("Deleting temp file on path " + tempFile.getAbsolutePath());
boolean deleted = tempFile.delete();