文件上傳是 Web 開發中最常見的一個應用場景。一般在處理數據時,會有兩種常見的方案:直接把文件流放在內存裏,或者把文件流先緩衝到磁盤。
1、如果是高頻且文件極小
使用純內存模式,默認即可。如果高頻小文件,是不適合用“臨時文件模式”的,磁盤可能容易刷壞。只能多配些內存!
2、如果是低頻或者文件很大
建議使用“臨時文件模式”。即上傳的數據流,先緩存爲臨時文件(落盤),再以本地文件流形式提供使用。這個非常省內存。比如,上傳 1GB 的文件,服務內存幾乎不會上升。
- 添加配置
使用臨時文件需要通過配置開啓
server.request.useTempfile: true #默認 false
- 用後主動刪除(建議,不管有沒有用“臨時文件模式”都主動刪除)
使用完後,注意要刪掉
@Controller
public class DemoController{
@Post
@Mapping("/upload")
public void upload(UploadedFile file) {
try{
file.transferTo(new File("/demo/user/logo.jpg"));
} finally {
file.delete();
}
}
}