核心原则:略小于你的传输限制。
| 场景 | 建议单片大小 | 说明 |
|---|---|---|
| 邮件附件 | 10 MB ~ 20 MB | 多数邮箱单附件限 20~25 MB |
| 网盘 / 企业网盘 | 100 MB | 常见单文件上限,分片后打包上传 |
| 微信 / QQ 传文件 | 50 MB ~ 100 MB | 太大容易中断,小分片更好重试 |
| FAT32 U 盘 | 500 MB ~ 1 GB | FAT32 单文件最大 4 GB |
| 断点续传 | 越小越好 | 单片越大,失败重传代价越高 |
| 分片太多 | 适当调大 | 上千个分片管理起来很痛苦 |
⚠️ 使用提示:① 文件不会上传——拆分与合并都在你自己的浏览器里完成,没有任何网络请求;② 拆分是纯字节切割,不压缩、不加密,分片拼回去与原文件完全一致(可用「哈希计算」比对 SHA-256 验证);③ 本工具不会修改你的原文件,只生成新的分片文件;④ 合并时会把所有分片一次性读进内存,总计超过约 2 GB 可能因浏览器内存限制失败,这种情况请用命令行(copy /b 或 cat);⑤ 合并必须按顺序选中全部分片,漏掉一个或顺序错了,拼出来的文件就是坏的;⑥ 浏览器通常会拦截「连续自动下载多个文件」,逐个下载时请在弹窗中允许;⑦ 分片下载完成后务必保留,原文件请自己备份,本工具不保存任何数据。
网盘单文件限 100 MB,你有一个 800 MB 的数据库备份;邮箱附件限 20 MB,你要发一段 300 MB 的录屏;FAT32 的 U 盘放不下 5 GB 的镜像——
解决办法就是切成小分片:把一个大文件按固定大小切成若干个小文件,分别传输,到了目的地再拼回原样。
① 拆分:选文件 → 选单片大小 → 生成清单 → 逐个下载;
② 合并:一次选中所有分片 → 按文件名排序 → 拼接 → 下载完整文件;
③ 无损:纯字节切割,不压缩不加密,拼回去和原文件一模一样;
④ 命名:分片命名沿用「原名 + 序号」(如 backup.zip.001),合并时按名字排序即可对上顺序;
⑤ 本地:不上传、不暂存、不修改原文件。
怎么实现:
① 拆分:核心是 file.slice(start, end)。它只是记录一段区间,并不立刻复制数据——所以生成 1000 个分片的清单也是瞬间完成、几乎不占内存;真正点「下载」时才把那一段包成 Blob 写出;
② 命名:原名 + '.' + 三位序号(film.mp4.001、film.mp4.002…),序号按三位补零,排序时字典序 = 数字序,合并不会错位;
③ 合并:把每个分片读成 ArrayBuffer,按顺序 new Blob([buf1, buf2, …]) 拼成一个大 Blob,再用 createObjectURL 触发下载;
④ 排序:默认用 localeCompare(…, {numeric:true}) 做自然排序,保证 .010 排在 .002 之后而不是前面(普通字符串排序会把 10 排在 2 前面);
⑤ 无损:全程不压缩、不转码、不改字节,所以合并结果与原文件逐字节相同;
⑥ 内存:拆分几乎不占内存;合并需要把所有分片同时放进内存,这是浏览器合并方式的固有限制。
它不做:不做压缩(请用压缩工具)、不做加密(请用加密工具)、不做断点续传、不保存任何文件到服务器。
File.slice() 实现按大小拆分(1 MB ~ 500 MB,支持自定义),生成分片清单并支持单独下载 / 逐个批量下载;合并侧支持多选分片、自然排序拼接、自定义输出文件名与进度显示。全程本地处理,不上传、不压缩、不修改原文件,字节级无损。纯本地零依赖,适配黑夜模式。
.part1、.aa),自然排序可能对不上,这时改用「按选择顺序」并手动按序选择;copy /b film.mp4.* film.mp4;cat film.mp4.* > film.mp4;审核通过后就会展示在留言板上,稍安勿躁~
还没有留言,来抢沙发吧!