当前位置: 首页 > wzjs >正文

潍坊做网站的企业销售推广

潍坊做网站的企业,销售推广,seo网站分析,自建网站系统个人博客:haichenyi.com。感谢关注 一. 目录 一–目录二–分片上传三–生成文件唯一标识(文件哈希)​四–断点续传 & 秒传五–分片上传(并发控制)​六–服务端合并分片​七–优化​八–总结​ 大文件上传的核心…

个人博客:haichenyi.com。感谢关注

一. 目录

  • 一–目录
  • 二–分片上传
  • 三–生成文件唯一标识(文件哈希)​
  • 四–断点续传 & 秒传
  • 五–分片上传(并发控制)​
  • 六–服务端合并分片​
  • 七–优化​
  • 八–总结​

  大文件上传的核心痛点是:文件过大,用户网络环境不稳定,服务器压力过大,容易中断,用户体验极差。只要解决这几个问题就行了。其实,最重要的一个问题就是文件过大。文件太大了,我们就分成几份上传就行了。这就是分片。

大文件上传的核心流程​
​​1. ​​前端分片​​ → 2. ​​计算文件唯一标识​​ → 3. ​​上传分片​​ → 4. ​​服务端合并分片​​ → 5. ​​完整性校验​

二. 分片上传

  将大文件分割成多个固定的小文件,减少单次请求的压力。举个栗子:100M的文件,分成10份,每个10M,这样就可以解决问题。核心代码如下

//主要就是File.slice
function createFileChunks(file, chunkSize = 10 * 1024 * 1024) {//分片数组const chunks = []//文件总大小const fileSize = file.sizelet start = 0while (start < fileSize) {//单个分片let chunk = {//文件数据chunk: file.slice(start, start + fileSize),//索引,用于文件合并时的顺序index: chunks.length}chunks.push(chunk)start += chunkSize}return chunks
}

三. 生成文件唯一标识(文件哈希)

  使用文件内容生成唯一标识,用于标识文件,实现秒传和断点续传。代码如下

function calculateFileHash(file) {return new Promise((resolve, reject) => {const reader = new FileReader();const spark = new SparkMD5.ArrayBuffer();reader.readAsArrayBuffer(file);reader.onload = (e) => {spark.append(e.target.result);const hash = spark.end();resolve(hash);};})
}

四. 断点续传 & 秒传

秒传: 在上传之前,检查服务端是否存在已经有相同哈希值的文件,有则跳过,没有,则上传
断点续传: 上传前,检查已经上传的分片列表,跳过已上传的分片

五. 分片上传(并发控制)

使用Promise池控制并发数(如同时上传3个分片),避免浏览器阻塞。

async function uploadChunks(chunks, fileHash, concurrency = 3) {const pool = new Set(); // 并发池for (const { chunk, index } of chunks) {const formData = new FormData();formData.append('chunk', chunk);formData.append('hash', fileHash);formData.append('index', index);const task = fetch('/api/upload-chunk', {method: 'POST',body: formData,}).then(() => {pool.delete(task);});pool.add(task);if (pool.size >= concurrency) {await Promise.race(pool); // 等待任意任务完成}}await Promise.all(pool); // 等待剩余任务完成
}

六. 服务端合并分片

当文件分片全都上传完成之后,前端触发文件合并逻辑,服务端合并文件。我们上传文件分片的时候上传了文件的hash值和索引。直接按照文件的hash值过滤出同一个文件的分片,然后按照索引,一次写入file即可。

七. 优化​

  1. 分片上传进度显示​。
  2. 错误重试机制​,为每个分片上传添加重试逻辑(最多3次)。
  3. 浏览器本地持久化,使用localStorage或IndexedDB保存上传状态,页面刷新后恢复。

八. 总结

大文件上传的核心在于​​分治策略​​:

  • 分片​​:将大问题拆解为小任务
  • 断点续传​​:增强容错能力
  • 并发控制​​:平衡速度与稳定性
http://www.dtcms.com/wzjs/304338.html

相关文章:

  • 埃及网站后缀成都网络推广
  • 网站免费正能量软件推荐站长之家网站查询
  • 邢台市建设局安全监督管理网站北京seo网站管理
  • 做网站的主要作用的搜索引擎优化
  • 视频网站制作费用网站平台推广
  • 网站后台如何修改新闻发布时间荆门刚刚发布的
  • 网站维护怎么做网站友情链接连接
  • 营销类网站设计 要点百度官网下载安装
  • 网站开发维护承担的法律责任搜索指数
  • 辽宁奔之流建设工程有限公司网站房地产营销策略有哪些
  • 旅游网站怎么设计推广软文是什么意思
  • 临沂网站建设电话seo是搜索引擎营销
  • wordpress默认 页面首页关键词排名优化
  • 自己做网站需要服务器国家职业技能培训平台
  • 交易平台网站程序宁波网站制作优化服务公司
  • 开发网站实时监控个人网站开发网
  • 福田附近网站开发公司企业网站优化关键词
  • 做童装批发网站百度seo软件是做什么的
  • 东莞高明网站设计30个免费货源网站
  • 如何做下载网站赚钱短视频推广平台
  • 苏州做商城网站设计网站 推广
  • 用凡科做网站好弄吗关键词林俊杰mp3下载
  • 成都建设网站平台长沙网站关键词推广
  • 广州网站建设 易企建站全国最新的疫情数据
  • 宁波招聘网站开发免费网站推广工具
  • 手机网站程序做搜索引擎优化的企业
  • 网站设计常州百度推广登录网址
  • 网站开发技术实验教程互联网推广怎么找渠道
  • 网站搭建设计是什么公司软文推广
  • 电子商务后悔死了汕头seo不错