Solon Web 文件上传(upload)的最佳实践

文件上传是 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();
        }
    }
}   
相关推荐
驱动探索者10 分钟前
[缩略语大全]之[内存管理]篇
java·网络·算法·内存管理
okseekw16 分钟前
Java反射:解锁框架开发的终极密码,让代码拥有"动态灵魂"!
java·后端
码农水水22 分钟前
腾讯Java面试被问:阻塞队列BlockingQueue的实现原理
java·后端·python·面试
曲幽25 分钟前
Flask登录验证实战:从零构建一个基础的账号密码登录系统
python·flask·web·session·username·login
廋到被风吹走36 分钟前
【Spring】BeanPostProcessor详解
java·后端·spring
bbq粉刷匠41 分钟前
二叉树中两个指定节点的最近公共祖先
java·算法
ppo921 小时前
Spring Boot 集成 Kafka 3.9.0:部署、监控与消息发送教程
java·架构
JavaEdge.1 小时前
IDEA卡死没反应的全部解决方案
java·ide·intellij-idea
高山上有一只小老虎1 小时前
使用Memory Analyzer (MAT)分析内存溢出
java·jvm
嘴贱欠吻!1 小时前
JavaSE基础知识
java·开发语言