spark-md5import SparkMD5 from 'spark-md5';

var hexHash = SparkMD5.hash('Hi there');        // hex hash

var rawHash = SparkMD5.hash('Hi there', true);  // OR raw hash (binary string)

这是最简单的生成hash的方法,但是如果是大文件断点续传的话,这种方式获取hash码就不行了。因为你上传的文件可能2G,4G,5G甚至更大,你的内存根本盛不下,这时候就需要换一种计算hash的方法了。function calcMD5(file,callback){

this.upstate="MD5计算中...";

this.percent=0;

let chunkSize=2097152,

chunks=Math.ceil(file.size/chunkSize),

currentChunk=0,

spark=new SparkMD5.ArrayBuffer(),

fileReader=new FileReader();

fileReader.οnlοad=(e)=>{

//对于读取的文件计算hash码。

spark.append(e.target.result);

currentChunk++;

this.percent=((currentChunk/chunks)*100).toFixed(2)-0;

if(currentChunk

loadNext();

}else{

callback(spark.end());

}

}

//分次读取大文件的内容,

function loadNext(){

let start=currentChunk*chunkSize,

end=((start+chunkSize)>=file.size)?file.size:start+chunkSize;

fileReader.readAsArrayBuffer(file.slice(start,end));

}

loadNext();

},

上面这个方法,通过分片读取文件,并将读取的文件内容添加到sparkMD5的hash计算中,直到文件读取完毕,最后返回最终的hash码到callback回调函数里面。这种方法理论上读取的文件可以无限大。

断点续传的原理

web中我们通过sparkMD5计算文件的hash码,传递到后台,后台查询此hash码,如果查询到,则表明此文件已经上传过,或者已经上传过一部分,如果是上传了一部分,则返回已上传的字节数,前端通过slice方法分割文件传输剩余的部分,就可以实现断点续传了。

这里暂对断点续传的原理做简单介绍,下篇文章将详细阐述断点续传的过程以及贴出实现代码,敬请关注

html5计算文件hash,spark-md5生成hash码,spark-md5计算大文件hash码实现断点续传相关推荐

  1. 大文件分片上传前端框架_无插件实现大文件分片上传,断点续传

    文件上传.gif 1. 简介: 本篇文章基于实际项目的开发,将介绍项目中关于大文件分片上传.文件验证.断点续传.手动重试上传等需求的使用场景及实现: 2. 项目需求 在一个音视频的添加中,既要有音视频 ...

  2. java内存中读文件_关于内存管理:读取Java中的大文件

    我需要一个非常了解Java和内存问题的人的建议. 我有一个大文件(大约1.5GB),我需要将此文件切成许多小文件(例如100个小文件). 我通常知道如何做到这一点(使用BufferedReader), ...

  3. ssm上传文件进度条_SSM框架+Plupload实现分块上传大文件示例

    关于Plupload的介绍,相信它的官网http://www.plupload.com/已经给得很详细了.Plupload的上传原理简单点说,就是将用户选中的文件(可多个)分隔成一个个小块,依次向服务 ...

  4. linux中split分割文件打开方式,Linux系统下使用split命令分割大文件 (转载)

    [小蜗牛闲情之作 ] 我想给一个朋友传一个大视频,有几百M,尝试多种传输办法失败后,最后想到的是把视频切开一片片"邮递"过去给他,让它自己组装起来吧. [root@pps publ ...

  5. java写入excel文件内存不足,java 导出 excel 最佳实践,java 大文件 excel 避免OOM(内存溢出) excel 工具框架...

    产品需求 产品经理需要导出一个页面的所有的信息到 EXCEL 文件. 需求分析 对于 excel 导出,是一个很常见的需求. 最常见的解决方案就是使用 poi 直接同步导出一个 excel 文件. 客 ...

  6. mysql数据文件有10g_百万行mysql数据库优化和10G大文件上传方案

    最近这几天正在忙这个优化的方案,一直没时间耍,忙碌了一段时间终于还是拿下了这个项目?项目中不要每次都把程序上的问题,让mysql数据库来承担,它只是个mysql而已. 问题1:针对MySQL Comm ...

  7. python怎么读文件后删去空格以行为单位进行排序-python 大文件以行为单位读取方式比对...

    先前需要做一个使用python读取大文件(大于1G),并逐条存入内存进行处理的工作.做了很多的尝试,最终看到了如下的文章. 该文章实际上提供了集中读取大文件的方式,先经过测试总结如下 1. for l ...

  8. php 超过100m文件上传,科技常识:apache+php上传大文件以上传100M为例

    科技常识:apache+php上传大文件以上传100M为例 2021-03-19 18:54:57 今天小编跟大家讲解下有关apache+php上传大文件以上传100M为例 ,相信小伙伴们对这个话题应 ...

  9. python csv 大文件_Python性能调优:JSON到CSV,大文件

    一位同事要求我将"yelp数据集挑战"中的6个大文件从"扁平"的常规JSON转换为CSV(他认为这些文件看起来像有趣的教学数据). 我想我可以用: 1 2 3 ...

  10. linux 中将文件设置密码,linux – 如何使用公钥在openssl中加密大文件

    如何使用公钥加密大文件,以便没有人除了拥有私钥的人能够解密? 我可以使RSA公钥和私钥,但当涉及到使用此命令加密大文件: openssl rsautl -encrypt -pubin -inkey p ...

最新文章

  1. c# 带返回值的action_C#委托Action、ActionT、FuncT、PredicateT
  2. 【设计模式】工厂方法模式 Factory Method Pattern
  3. ZOJ 3720 Magnet Darts (计算几何,概率,判点是否在多边形内)
  4. JeecgBoot 移动OA 新版本出炉,速度体验!!!
  5. 深度学习制作数据集的部分代码实现(解压zip、生成json文件)
  6. php 微盘系统教程,新版微盘API接口调用方法
  7. php并发访问排队_使用xdebug对php做性能分析调优
  8. 戴尔创业节丨高效编程利器Vostro低至2099!双11提前享!
  9. 判断文件是否为图片格式
  10. matlab 窄带通,MATLAB 窄带随机过程
  11. PSpice for TI和TINA-TI的区别
  12. 项目管理知识体系指南学习(三)项目整合管理
  13. 用PHP+MYSQL写一个完整的登录界面
  14. 无法访问计算机请检查名称的拼写,windows无法访问 请检查名称的拼写… 错误代码:0x80004005和0x80070035和 0x800704cf...
  15. 三维电影特效动画制作软件——Houdini 17.5
  16. 理论+实践解析“IT治理”之模式与原则
  17. 基于keepalived的mysql_【实用】基于keepalived的mysql双主高可用系统
  18. 达观AI+知识图谱技术在数字档案馆建设中的探索
  19. iphone android换机助手下载,安卓苹果换机助手
  20. 普中科技手把手教你学ESP32--基于MicroPython-02

热门文章

  1. 求乘法逆元c语言版,C语言实现求乘法逆元
  2. HAPPE+ER软件:标准化事件相关电位ERP的预处理的pipeline
  3. numpy之argmax、argmin、maximum函数
  4. 【Python】Numpy中的argmax()函数
  5. java字段_java字段是什么
  6. 中航创世智慧康复,助力康复医疗技术跨越发展
  7. 制作一个偏心轮连杆简易六足【内附资料下载链接】
  8. Python exp() 函数
  9. 数据与广告系列二十:oCPX大势下标签定向的发展演化
  10. unity 导出的项目导入androidstudio 老报indexoutofrange的错的问题