Solon Web 檔案上傳的最佳實踐

带刺的坐椅發表於2024-03-19

檔案上傳是 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();
        }
    }
}   

相關文章