Solon Web 文件上传的最佳实践

文件上传是 Web 开发中最常见的一个应用场景。一般在处理数据时,会有两种常见的方案:直接把文件流放在内存里,或者把文件流先缓冲到磁盘。

1、如果是高频且文件极小

使用纯内存模式,默认即可。如果高频小文件,是不适合用"临时文件模式"的,磁盘可能容易刷坏。只能多配些内存!

2、如果是低频或者文件很大

建议使用"临时文件模式"。即上传的数据流,先缓存为临时文件(落盘),再以本地文件流形式提供使用。这个非常省内存。比如,上传 1GB 的文件,服务内存几乎不会上升。

  • 添加配置

使用临时文件需要通过配置开启

yaml 复制代码
server.request.useTempfile: true #默认 false
  • 用后主动删除(建议,不管有没有用"临时文件模式"都主动删除)

使用完后,注意要删掉

java 复制代码
@Controller
public class DemoController{
    @Post
    @Mapping("/upload")
    public void upload(UploadedFile file) { 
        try{
            file.transferTo(new File("/demo/user/logo.jpg")); 
        } finally {
            file.delete();
        }
    }
}   
相关推荐
ZZHow10241 天前
JavaWeb开发_Day05
java·笔记·web
OEC小胖胖6 天前
【CSS 布局】告别繁琐计算:CSS 现代布局技巧(gap, aspect-ratio, minmax)
前端·css·web
别来无恙1496 天前
Spring Boot文件上传功能实现详解
java·spring boot·文件上传
Code季风8 天前
深入理解 Gin 框架的路由机制:从基础使用到核心原理
ide·后端·macos·go·web·xcode·gin
OEC小胖胖8 天前
第七章:数据持久化 —— `chrome.storage` 的记忆魔法
前端·chrome·浏览器·web·扩展
OEC小胖胖8 天前
第六章:玩转浏览器 —— `chrome.tabs` API 精讲与实战
前端·chrome·浏览器·web·扩展
cyber_两只龙宝8 天前
综合项目记录:自动化备份全网服务器数据平台
linux·运维·服务器·自动化·web
鹏多多.10 天前
flutter-使用AnimatedDefaultTextStyle实现文本动画
android·前端·css·flutter·ios·html5·web
OEC小胖胖10 天前
幕后英雄 —— Background Scripts (Service Worker)
开发语言·前端·javascript·浏览器·web·扩展
姜 萌@cnblogs12 天前
【实战】让AI理解用户的文化背景:开源项目Saga Reader自动翻译的技术实现
ai·web·tauri