html5计算文件hash,spark-md5生成hash码,spark-md5计算大文件hash码实现断点续传
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码实现断点续传相关推荐
- 大文件分片上传前端框架_无插件实现大文件分片上传,断点续传
文件上传.gif 1. 简介: 本篇文章基于实际项目的开发,将介绍项目中关于大文件分片上传.文件验证.断点续传.手动重试上传等需求的使用场景及实现: 2. 项目需求 在一个音视频的添加中,既要有音视频 ...
- java内存中读文件_关于内存管理:读取Java中的大文件
我需要一个非常了解Java和内存问题的人的建议. 我有一个大文件(大约1.5GB),我需要将此文件切成许多小文件(例如100个小文件). 我通常知道如何做到这一点(使用BufferedReader), ...
- ssm上传文件进度条_SSM框架+Plupload实现分块上传大文件示例
关于Plupload的介绍,相信它的官网http://www.plupload.com/已经给得很详细了.Plupload的上传原理简单点说,就是将用户选中的文件(可多个)分隔成一个个小块,依次向服务 ...
- linux中split分割文件打开方式,Linux系统下使用split命令分割大文件 (转载)
[小蜗牛闲情之作 ] 我想给一个朋友传一个大视频,有几百M,尝试多种传输办法失败后,最后想到的是把视频切开一片片"邮递"过去给他,让它自己组装起来吧. [root@pps publ ...
- java写入excel文件内存不足,java 导出 excel 最佳实践,java 大文件 excel 避免OOM(内存溢出) excel 工具框架...
产品需求 产品经理需要导出一个页面的所有的信息到 EXCEL 文件. 需求分析 对于 excel 导出,是一个很常见的需求. 最常见的解决方案就是使用 poi 直接同步导出一个 excel 文件. 客 ...
- mysql数据文件有10g_百万行mysql数据库优化和10G大文件上传方案
最近这几天正在忙这个优化的方案,一直没时间耍,忙碌了一段时间终于还是拿下了这个项目?项目中不要每次都把程序上的问题,让mysql数据库来承担,它只是个mysql而已. 问题1:针对MySQL Comm ...
- python怎么读文件后删去空格以行为单位进行排序-python 大文件以行为单位读取方式比对...
先前需要做一个使用python读取大文件(大于1G),并逐条存入内存进行处理的工作.做了很多的尝试,最终看到了如下的文章. 该文章实际上提供了集中读取大文件的方式,先经过测试总结如下 1. for l ...
- php 超过100m文件上传,科技常识:apache+php上传大文件以上传100M为例
科技常识:apache+php上传大文件以上传100M为例 2021-03-19 18:54:57 今天小编跟大家讲解下有关apache+php上传大文件以上传100M为例 ,相信小伙伴们对这个话题应 ...
- python csv 大文件_Python性能调优:JSON到CSV,大文件
一位同事要求我将"yelp数据集挑战"中的6个大文件从"扁平"的常规JSON转换为CSV(他认为这些文件看起来像有趣的教学数据). 我想我可以用: 1 2 3 ...
- linux 中将文件设置密码,linux – 如何使用公钥在openssl中加密大文件
如何使用公钥加密大文件,以便没有人除了拥有私钥的人能够解密? 我可以使RSA公钥和私钥,但当涉及到使用此命令加密大文件: openssl rsautl -encrypt -pubin -inkey p ...
最新文章
- c# 带返回值的action_C#委托Action、ActionT、FuncT、PredicateT
- 【设计模式】工厂方法模式 Factory Method Pattern
- ZOJ 3720 Magnet Darts (计算几何,概率,判点是否在多边形内)
- JeecgBoot 移动OA 新版本出炉,速度体验!!!
- 深度学习制作数据集的部分代码实现(解压zip、生成json文件)
- php 微盘系统教程,新版微盘API接口调用方法
- php并发访问排队_使用xdebug对php做性能分析调优
- 戴尔创业节丨高效编程利器Vostro低至2099!双11提前享!
- 判断文件是否为图片格式
- matlab 窄带通,MATLAB 窄带随机过程
- PSpice for TI和TINA-TI的区别
- 项目管理知识体系指南学习(三)项目整合管理
- 用PHP+MYSQL写一个完整的登录界面
- 无法访问计算机请检查名称的拼写,windows无法访问 请检查名称的拼写… 错误代码:0x80004005和0x80070035和 0x800704cf...
- 三维电影特效动画制作软件——Houdini 17.5
- 理论+实践解析“IT治理”之模式与原则
- 基于keepalived的mysql_【实用】基于keepalived的mysql双主高可用系统
- 达观AI+知识图谱技术在数字档案馆建设中的探索
- iphone android换机助手下载,安卓苹果换机助手
- 普中科技手把手教你学ESP32--基于MicroPython-02
热门文章
- 求乘法逆元c语言版,C语言实现求乘法逆元
- HAPPE+ER软件:标准化事件相关电位ERP的预处理的pipeline
- numpy之argmax、argmin、maximum函数
- 【Python】Numpy中的argmax()函数
- java字段_java字段是什么
- 中航创世智慧康复,助力康复医疗技术跨越发展
- 制作一个偏心轮连杆简易六足【内附资料下载链接】
- Python exp() 函数
- 数据与广告系列二十:oCPX大势下标签定向的发展演化
- unity 导出的项目导入androidstudio 老报indexoutofrange的错的问题