恒瑞浪潮成立于2019年,专注软件定制开发与微信小程序定制,网站建设也是老本行,案例众多!

7×24 咨询热线 18361615533 · 微信同号

咨询热线 18361615533 电话 / 微信同号

首页/公安应用开发/盐城应用开发_盐城应用开发

大文件上传与断点续传怎么做

发布时间2026-08-10|栏目盐城应用开发_盐城应用开发|浏览480

业务系统里经常要上传大文件。设计图纸、视频素材、扫描件、数据备份,几十兆到几个 G 都可能有。用户网络稍差一点,传到一半断了,全部重来,反复几次就没人愿意用了。

解决这个问题的思路是分片,把大文件切成小块分开传。

一、分片上传是怎么做的

把文件按固定大小切成若干块,比如每块几兆。每一块单独上传,服务端收到后先存起来,等所有块都到齐了再拼成完整的文件。

分片的好处是失败重传的成本低。某个块传失败了,只需要重传这一块,前面的不用重来。网络不稳定的环境下,这个优势很明显。

分片还能并行上传。同时传几个块,速度比串行快。具体并行几个要看网络和服务器的承受能力,太多反而会互相争抢带宽。

二、断点续传靠什么实现

关键在于服务端能记住哪些块已经收到了。用户中断之后再上传同一个文件,服务端先算出这个文件的标识,查出已经收到哪些块,告诉客户端只传缺的那些。

文件标识怎么算。常用的是用文件内容算一个摘要值,内容一样摘要就一样。这样同一个文件换个名字重新传,也能识别出来已经传过。

本地也要有记录。用户上传中断之后关掉了页面,下次打开同一个文件,客户端要知道传到哪了。可以在本地记录每个文件的上传进度。

已经传完的块要有时效。用户传了一半不传了,这些块不能永远占着空间。要设置一个清理周期,比如超过几天没有续传的自动清掉。

三、进度要让人看得见

上传大文件耗时较长,没有进度反馈用户会以为卡住了。进度条要真实反映已经传了多少,不要做成假动画。

速度慢的时候要给提示。显示当前速度和预计剩余时间,用户心里有数就不会频繁刷新。如果速度特别慢,可以提示用户换个网络环境。

失败要能重试。断了之后要有一个明显的重试按钮,点一下从断的地方继续,而不是从头开始。这一点是用户最能感受到的地方。

四、几个实际问题

服务器要限制文件大小和类型。不限大小的话,有人传几个 G 的文件会把存储占满。不限类型的话,可能有人上传不允许的文件。这两项限制要在服务端做,客户端做的限制能绕过。

上传的文件要能防盗链。文件存放在公开可访问的位置,只要知道地址谁都能下载。涉及内部资料的要加访问控制,用带时效的链接。

要考虑并发。同一个人同时传好几个大文件,或者多个人同时传,服务器的带宽和存储压力会很大。可以在业务层面限制同时上传的数量。

最后一点,上传之后的处理要考虑。有些文件上传后要转格式、生成缩略图、做病毒扫描,这些处理耗时,不适合放在上传的请求里同步做。做成上传完成之后异步处理,处理完了再通知用户。

最新资讯

查看全部资讯
QQ咨询 电话 顶部