分享好友 最新动态首页 最新动态分类 切换频道
nodeJs + js 大文件分片上传
2024-12-27 10:15

一、准备文件上传的条件:

nodeJs + js 大文件分片上传

1、安装nodejs环境

2、安装vue环境

3、验证环境是否安装成功

二、实现上传步骤

1、前端部分使用 vue-cli 脚手架,搭建一个 demo 版本,能够实现简单交互:

2、安装 axios 实现与后端交互:

3、后端使用 node-koa 框架:

4、前端实现上传请求:

5、node 接收文件接口:

以上全部过程就实现了一个简单的文件上传功能。

 

 

 

这种实现方式上传功能对于小文件来说没什么问题,但当需求中碰到大文件的时候,能解决上传中遇到的各种问题,比如网速不好时、上传速度慢、断网情况、暂停上传、重复上传等问题。想要解决以上问题则需要优化前面的逻辑。

1、分片逻辑如下:

  • 由于前端已有 Blob Api 能操作文件二进制,因此最核心逻辑就是前端运用 Blob Api 对大文件进行文件分片切割,将一个大文件切成一个个小文件,然后将这些分片文件一个个上传。
  • 现在的 http 请求基本是 1.1 版本,浏览器能够同时进行多个请求,这将用到一个叫 js 异步并发控制的处理逻辑。
  • 当前端将所有分片上传完成之后,前端再通知后端进行分片合并成文件。

2、在进行文件分片处理之前,先介绍下 js 异步并发控制:

js 异步并发控制的逻辑是:运用 Promise 功能,定义一个数组 fetchArr,每执行一个异步处理往 fetchArr 添加一个异步任务,当异步操作完成之后,则将当前异步任务从 fetchArr 删除,则当异步 fetchArr 数量没有达到最大数的时候,就一直往 fetchArr 添加,如果达到最大数量的时候,运用 Promise.race Api,每完成一个异步任务就再添加一个,当所有最后一个异步任务放进了 fetchArr 的时候,则执行 Promise.all,等全部完成之后则执行回调函数。

上面这逻辑刚好适合大文件分片上传场景,将所有分片上传完成之后,执行回调请求后端合并分片。

前端改造:

1、定义一些全局参数:

2、文件分割方法:

以上方式的处理逻辑:定义一个切片缓存数组,当文件进行分片之后,将缓存所有的分片信息、根据最大分片大小计算分片数量、计算整个文件的 hash (spark-md5) 值,这将意味着,只要文件内容不变,这 hash 值也将不变,这涉及到后面的秒传功能、然后进行文件分片。

 3、改造上传方法:

 注意:以上代码中设置当文件大小大于分片大小的5倍进行分片上传。

4、定义分片上传请求(sendRequest)和合并请求(chunkMerge):

 5、分片请求将结合上面提到的 JS 异步并发控制:

 6、切片上传请求:

 7、切片合并请求:

前端处理文件分片逻辑代码已完成

后端处理

后端部分就只新增两个接口:分片上传请求和分片合并请求:

1、分片上传请求:

2、分片合并请求:

切片上传成功与文件合并截图:

 

1、前端暂停,续传功能:

2、js 新增主动暂停和续传方法,比较简单,这里没有做停止正在执行的请求:

前端大文件的分片上传就差不多了。还可以优化的一点,在进行文件 hash 求值的时候,大文件的 hash 计算会比较慢,这里可以加上 html5 的新特性,用 Web Worker 新开一个线程进行 hash 计算。

 

GitHub:https://github.com/554246839/file-upload

最新文章
超级外链发布平台:全面的外链规划与执行指南
简介在竞争激烈的数字环境中,外链建设对于提高网站知名度、建立可信度和推动流量至关重要。本指南提供了建立全面的外链发布平台所需的规划和执行框架,旨在帮助您优化在线策略并获得竞争优势。规划阶段明确定义外链建设的目标,例如提高网
杭州SEO优化攻略,快速提升网站排名,锁定市场制高点
杭州SEO推广优化,关键在于深入理解搜索引擎算法,优化网站结构,提高内容质量,合理使用关键词,构建高质量外链。持续优化,紧跟搜索引擎动态,有效提升网站排名,抢占市场先机。随着互联网的普及,越来越多的企业开始意识到网络营销的重
林子雨老师主讲研究生课程《分布式数据库技术》2012班级主页
12012年9月8日21时班级主页创建,发布选课宣传海报22012年9月12日8时9月24日(教学周第2周周一)晚上7点开始上课,老师紧张备课中,同学们明天就要来学校报到注册,即将开始选课,助教暂时未定,必须根据选课人数来确定是否被允许申请助教3
文本生成纠错指标
此篇博客记录Scene text detection深度学习相关论文笔记。 Ref:Scene Text Detection and Recognition: The Deep Learning Era 世界没有一定…才能…,just do it.FCN是一种semantic segmentation深度学习方法。特点使用不同的backbone net
seo优化要怎么做,seo五大优化步骤介绍
许多人都想学习所谓的快速优化自己的网站关键词计划。今日小编告诉大家共享一个办法,采用了这个办法,网站关键词的排名提高十分的显着,十分干货哦!废话不多说,进入主题。 (1)首要需要对网站的中心关键词进行海量的挑选、挑选的东西在上
迪卡侬变了?中高端布局与社群营销能否让其焕发新生机?
迪卡侬,这个曾经被广大消费者亲切地称为“穷鬼乐园”的运动超市,近年来似乎正在悄然发生着变化。不少细心的人们发现,迪卡侬的商品价格似乎有所上调,引发了关于其是否正在抛弃“亲民”标签的讨论。面对这样的质疑,迪卡侬方面给出了明确
苹果iWork套件大升级,Apple Intelligence功能强势来袭!
苹果公司于近日对旗下的iWork套件进行了重要更新,涵盖了macOS和iOS平台,为Pages、Numbers和Keynote三款生产力工具新增了三项Apple Intelligence功能,为用户带来更加智能和便捷的使用体验。根据苹果的官方更新说明,Pages 14.3、Numbers
智能绘画创作:AI自画像创意与说明解析
随着科技的飞速发展,人工智能逐渐渗透到各个领域,绘画艺术也不例外。自画像作为一种新兴的艺术形式,以其特别的魅力和便捷性,成为了创意工作者的得力助手。本文将围绕自画像的创意与说明实解析,探讨其背后的技术原理和艺术价值。自画像
三年在线免费观看如何轻松找到优质资源
随着互联网的飞速发展,我们进入了一个信息爆炸的时代。在这个时代里,无论你想学习什么,都可以通过网络找到相应的资源。那么,如何在浩如烟海的网络资源中,轻松找到优质资源呢?下面,我们将从几个方面来为大家介绍。你需要明确自己的需
铜梁爱采购运营技巧
1、专享企业个人名片。在百度搜索結果中,特制信用卡展现,为店家打造品牌,提高名气。2、多情景开启呈现。产品搜索、型号规格搜索、生产厂家搜索、市场行情搜索、等情景开启呈现,扩展总流量。3、产品百度收录跨平台同歩呈现。PC、挪动网
相关文章
推荐文章
发表评论
0评