UploadThing Solid 客户端库新增上传进度粒度控制功能
2025-06-12 07:57:29作者:仰钰奇
UploadThing 是一个专注于文件上传解决方案的开源项目,它提供了简单易用的API和客户端库,帮助开发者快速实现文件上传功能。该项目支持多种前端框架,包括React、Vue和Solid等。
在最新发布的@uploadthing/solid@7.3.0版本中,开发团队为Solid.js用户带来了一个实用的新功能——上传进度粒度控制。这个功能让开发者能够更精细地控制上传进度事件的触发频率,从而优化用户体验和性能。
上传进度粒度控制详解
新版本引入了uploadProgressGranularity选项,允许开发者根据实际需求调整上传进度更新的频率。这个选项提供了三个预设级别:
- all:最详细的级别,会转发XHR上传过程中的每一个进度事件
- fine:中等粒度,每完成1%的进度会触发一次事件
- coarse(默认值):最粗粒度,每完成10%的进度才会触发一次事件
技术实现原理
在底层实现上,UploadThing利用了XMLHttpRequest的progress事件。当文件上传时,浏览器会不断触发progress事件,报告当前上传的字节数和总字节数。通过uploadProgressGranularity选项,UploadThing对这些原始事件进行了过滤和节流处理。
使用场景建议
- 实时进度展示:对于需要展示精确上传进度的场景(如大文件上传),可以使用
fine或all级别 - 性能优化:在移动端或网络条件较差的场景下,建议使用默认的
coarse级别,减少不必要的事件处理 - 后台任务:对于用户不可见的后台上传任务,甚至可以完全关闭进度更新以节省资源
集成示例
在Solid.js项目中使用这个新功能非常简单:
import { createUploadThing } from "@uploadthing/solid";
const uploader = createUploadThing({
uploadProgressGranularity: "fine", // 设置为1%粒度
// 其他配置...
});
版本兼容性
这个新功能属于次要版本更新,完全向后兼容。开发者可以放心升级到7.3.0版本,而无需担心破坏性变更。同时,该版本也更新了共享依赖@uploadthing/shared到7.1.7版本,确保底层功能的稳定性和安全性。
UploadThing团队通过这个更新再次展示了他们对开发者体验的重视,为文件上传场景提供了更灵活的控制选项,帮助开发者构建更高效、更用户友好的文件上传功能。
登录后查看全文
热门项目推荐
相关项目推荐
GLM-5智谱 AI 正式发布 GLM-5,旨在应对复杂系统工程和长时域智能体任务。Jinja00
GLM-5-w4a8GLM-5-w4a8基于混合专家架构,专为复杂系统工程与长周期智能体任务设计。支持单/多节点部署,适配Atlas 800T A3,采用w4a8量化技术,结合vLLM推理优化,高效平衡性能与精度,助力智能应用开发Jinja00
jiuwenclawJiuwenClaw 是一款基于openJiuwen开发的智能AI Agent,它能够将大语言模型的强大能力,通过你日常使用的各类通讯应用,直接延伸至你的指尖。Python0193- QQwen3.5-397B-A17BQwen3.5 实现了重大飞跃,整合了多模态学习、架构效率、强化学习规模以及全球可访问性等方面的突破性进展,旨在为开发者和企业赋予前所未有的能力与效率。Jinja00
AtomGit城市坐标计划AtomGit 城市坐标计划开启!让开源有坐标,让城市有星火。致力于与城市合伙人共同构建并长期运营一个健康、活跃的本地开发者生态。01
awesome-zig一个关于 Zig 优秀库及资源的协作列表。Makefile00
项目优选
收起
deepin linux kernel
C
27
12
OpenHarmony documentation | OpenHarmony开发者文档
Dockerfile
601
4.04 K
🔥LeetCode solutions in any programming language | 多种编程语言实现 LeetCode、《剑指 Offer(第 2 版)》、《程序员面试金典(第 6 版)》题解
Java
69
21
Ascend Extension for PyTorch
Python
441
531
AscendNPU-IR是基于MLIR(Multi-Level Intermediate Representation)构建的,面向昇腾亲和算子编译时使用的中间表示,提供昇腾完备表达能力,通过编译优化提升昇腾AI处理器计算效率,支持通过生态框架使能昇腾AI处理器与深度调优
C++
112
170
🎉 (RuoYi)官方仓库 基于SpringBoot,Spring Security,JWT,Vue3 & Vite、Element Plus 的前后端分离权限管理系统
Vue
1.46 K
823
本项目是CANN提供的数学类基础计算算子库,实现网络在NPU上加速计算。
C++
922
770
暂无简介
Dart
846
204
React Native鸿蒙化仓库
JavaScript
321
375
openGauss kernel ~ openGauss is an open source relational database management system
C++
174
249