Solon Web 文件上传(upload)的最佳实践
1、如果是高频且文件极小
使用“纯内存模式”,即默认。如果高频小文件,应该是不适合用“临时文件模式”的,磁盘可能容易刷坏。只能多配些内存!
2、如果是低频或者文件很大
建议使用“临时文件模式”。即上传的文件数据流,先缓存为临时文件,再以文件流形式提供使用。这个非常省内存。比如,上传 1GB 的文件,服务内存几乎不会上升。
- a) 添加配置
server.request.useTempfile: true #默认 false
- b) 用后主动删除(建议,不管有没有用“临时文件模式”都主动删除。方便随时切换)
使用完后,注意要删掉(框架不会自动删除)。如果等操作系统自动删除临时文件可能磁盘要暴掉了。
@Controller public class DemoController{ @Post @Mapping("/upload") public void upload(UploadedFile file) { try{ //可以同步处理,也可以异步 file.transferTo(new File("/demo/user/logo.jpg")); } finally { //用完之后,删除"可能的"临时文件 //v2.7.2 后支持 file.delete(); } } }
关于 useTempfile 的配置支持情况:
插件 | 情况 |
---|---|
solon.boot.jdkhttp | 支持 |
solon.boot.jlhttp | 支持 |
solon.boot.smarthttp | 支持 |
solon.boot.jetty | 支持 |
solon.boot.undertow | 不支持(强制使用临时文件模式) |
- c) 使用过滤器实现自动删除(文件处理不能为异步,否则提前就删没了)
public class FileDeleteFilter implements Filter { @Override public void doFilter(Context ctx, FilterChain chain) throws Throwable { chain.doFilter(ctx); if (ctx.isMultipartFormData()) { //批量删除临时文件 for (List<UploadedFile> files : ctx.filesMap().values()) { for (UploadedFile file : files) { file.delete(); } } } } }

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
1Panel 应用推荐:DataEase 开源数据可视化分析工具
1Panel(github.com/1Panel-dev/1Panel)是一款现代化、开源的Linux服务器运维管理面板,它致力于通过开源的方式,帮助用户简化建站与运维管理流程。为了方便广大用户快捷安装部署相关软件应用,1Panel特别开通应用商店,精选各类高质量的开源工具和应用软件,为用户的应用安装与升级操作提供便利。 目前,1Panel应用商店已经上架了超过100款精品软件并且定期更新维护,基本涵盖了大部分用户的基本装机需求。自2024年1月起,1Panel开源项目组特别开设“应用推荐”专栏,为大家推荐1Panel应用商店中的宝藏开源软件。 本期推荐应用 DataEase开源数据可视化分析工具 -官方网站- https://dataease.io -开源许可协议- GPL-3.0 license -应用描述- 人人可用的开源数据可视化分析工具 -开发语言- JavaScript、Vue.js -上架版本- 2.4.0 -GitHub Star- 14,774 -GitHub Fork- 2,700 推荐原因 数字化时代的来临带来了数据的爆发式增长。企业的生产活动会产生大量的业务数...
- 下一篇
苹果正在与百度就 iOS 18 集成生成式 AI 功能的合作进行谈判
据外媒报道,本周早些时候,有消息称,苹果正在与谷歌进行谈判,以授权其 Gemini 模型用于为即将推出的 iOS 18 中的一些生成式 AI 功能提供支持。据说还与 OpenAI 就可能的交易进行了交谈。 近日,《华尔街日报》称苹果还与百度进行了谈判,以获得其模型的许可。这可能是为了满足苹果在中国客户的人工智能请求,因为中国法律要求模型在被允许使用之前必须得到监管机构的批准。 迄今为止,中国监管机构已批准了 40 多个模型,其中包括百度的 Ernie Bot。 截至目前,据信苹果尚未与任何生成人工智能提供商敲定交易。谈判正在进行中,预计将在 6 月份的 WWDC 之前达成一致。iOS 18 预计将包含许多人工智能驱动的功能,一些任务在设备上处理,另一些则传递给在云中运行的后端模型。 假设苹果遵循一贯的传统,iOS 18 将于 6 月发布,开发者测试版将在夏季运行。iOS 18 将于 9 月份向所有 iPhone 客户免费下载,并预装在 iPhone 16 系列上。
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- SpringBoot2全家桶,快速入门学习开发网站教程
- CentOS8编译安装MySQL8.0.19
- CentOS7,CentOS8安装Elasticsearch6.8.6
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7
- SpringBoot2初体验,简单认识spring boot2并且搭建基础工程
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- SpringBoot2更换Tomcat为Jetty,小型站点的福音
- Docker安装Oracle12C,快速搭建Oracle学习环境