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();
        }
    }
}   
相关推荐
组合缺一12 小时前
ReActAgent 实战指南:构建会思考、能行动的 AI Agent
java·人工智能·ai·agent·solon·skills
还是鼠鼠17 小时前
AI掘金头条新闻系统 (Toutiao News)-缓存新闻详情
后端·python·mysql·fastapi·web
组合缺一18 小时前
用 ChatModel 构建 LLM 驱动的 Java 应用
java·开发语言·ai·llm·solon·rag
带刺的坐椅18 小时前
ReActAgent 使用指南:构建会思考、能行动的 AI Agent
java·ai·llm·solon·loop·react-agent
带刺的坐椅2 天前
用 ChatModel 构建 LLM 驱动的 Java 应用
java·ai·llm·solon·rag·chatmodel
曲幽7 天前
你的REST接口还在“过度投喂”数据吗?——FastAPI + GraphQL实战避坑指南
python·fastapi·web·graphql·route·cors·rest·strawberry
带刺的坐椅9 天前
Spring Boot → Solon 注解迁移实战指南:一张对照表说清楚
java·springboot·web·solon
曲幽13 天前
刚部署的 LibreTranslate 频频翻车?我掏出了 20 年前的 StarDict 词典,用 FastAPI 搭了个本地词典翻译 API
python·fastapi·web·translate·goldendict·libretranslate·stardict·pystardict
曲幽14 天前
别再用网页翻译看源码了!你的私人翻译神器LibreTranslate,部署避坑指南来了
python·docker·web·pot·translate·libretranslate·arogstranslate
llz_11219 天前
web-第四次课后作业
前端·spring boot·web