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();
        }
    }
}   
相关推荐
a_ran1 天前
一些 Go Web 开发笔记
后端·golang·go·编程·web·网站
柏箱1 天前
使用html写一个能发起请求的登录界面
前端·javascript·html·web
你怎么睡得着的!1 天前
【web安全】——文件上传漏洞
web安全·漏洞·文件上传
OEC小胖胖3 天前
Spring MVC系统学习(二)——Spring MVC的核心类和注解
java·后端·学习·spring·mvc·web
想要打 Acm 的小周同学呀4 天前
若依--文件上传前端
前端·状态模式·文件上传·低代码开发·若依
cyt涛6 天前
WEB服务器——Tomcat
运维·服务器·http·servlet·tomcat·web·jsp
OEC小胖胖6 天前
js中正则表达式中【exec】用法深度解读
开发语言·前端·javascript·正则表达式·web
Dovir多多7 天前
web服务器运维常用技巧总结
运维·服务器·ubuntu·docker·centos·云计算·web
余生H7 天前
前端大模型入门:使用Transformers.js实现纯网页版RAG(一)
前端·人工智能·transformer·embedding·web·word2vec·rag
安红豆.8 天前
[NewStarCTF 2023 公开赛道]Begin of PHP1
web安全·php·哈希算法·web·ctf