我想将 2MB - 10MB 的图像上传到我的服务器并将它们直接保存到硬盘。目标是尽可能多地节省 JVM 的堆内存,因为如果用户同时上传,我的系统不应该崩溃。
这就是我目前的做法。当带有上传的请求进入我的控制器时,我会:
CommonsMultipartFile file = (CommonsMultipartFile) request.getFile('image')
InputStream inputStream = file.inputStream
byte [] byteFile = inputStream.getBytes()
try{
def fullPath = // some image path and file name
def newFile = new FileOutputStream(fullPath)
newFile.write(byteFile)
newFile.close()
}
catch(IOException e){ }
在这里我读到有 ImageIO 和 java.awt.Toolkit,其中 Toolkit 应该是最快的存储文件。
如何改进我的上传以使用尽可能少的堆并尽可能快地上传?
备选方案 1:
一种替代方法可能是:
CommonsMultipartFile file = (CommonsMultipartFile) request.getFile('image')
def fullPath = // some image path and file name
file.transferTo(new File(fullPath))
哪一个更好?