HTML5 file api读取文件的MD5码工具

 

 

1、工具的用途:用HTML5 file api读取文件的MD5码。MD5码在文件的唯一性识别上有很重要的应用,业内常用MD5进行文件识别、文件秒传、文件安全性检查等;

2、适用性:IE、Chrome皆兼容;

3、缺陷:当上传大文件时,需要较长的时间才能扫描出MD5码;

4、关于引用:其中引用了js文件(spark-md5.js

 

 

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="utf-8">

    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">

    <title>HTML5 read files hash</title>
    <meta name="author" content="Mofei">
    <meta name="viewport" content="width=device-width; initial-scale=1.0;">
    <script src="spark-md5.js" type="text/javascript"></script>
</head>

<body>
    <div>
        <header>
            <h1>HTML5 read files hash</h1>
        </header>
        <div>
            <input type="file" id="file">
            <div id="box"></div>
        </div>
        <footer>
            <p>&copy; Copyright  by Percy(<a href="http://www.cnblogs.com/Percy_Lee/">www.cnblogs.com/Percy_Lee</a>)</p>
        </footer>
    </div>

    <script type="text/javascript">
     document.getElementById("file").addEventListener("change", function () {
        var fileReader = new FileReader(),
            box = document.getElementById('box'),
            blobSlice = File.prototype.mozSlice || File.prototype.webkitSlice || File.prototype.slice,
            file = document.getElementById("file").files[0],
            chunkSize = 2097152,
            chunks = Math.ceil(file.size / chunkSize),
            currentChunk = 0,
            bs = fileReader.readAsBinaryString,
            spark = bs ? new SparkMD5() : new SparkMD5.ArrayBuffer();

        fileReader.onload = function (ee) {
            spark.append(ee.target.result);
            currentChunk++;

            if (currentChunk < chunks) {
                loadNext();
            } else {
                box.innerText = 'MD5:  ' + spark.end();
            }
        }

        function loadNext() {
            var start = currentChunk * chunkSize, end = start + chunkSize >= file.size ? file.size : start + chunkSize;
            if (bs) fileReader.readAsBinaryString(blobSlice.call(file, start, end));
            else fileReader.readAsArrayBuffer(blobSlice.call(file, start, end));
        }

        loadNext();
    });

    </script>
</body>
</html>

 

转载于:https://www.cnblogs.com/Percy_Lee/p/5018825.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
JavaScript本身并没有提供计算文件MD5API,但可以通过引入第三方库来实现该功能。以下是使用第三方库spark-md5计算文件MD5的示例代: ```javascript // 引入spark-md5库 import SparkMD5 from 'spark-md5'; // 读取文件内容并计算MD5 function calculateMD5(file) { return new Promise((resolve, reject) => { let fileReader = new FileReader(); let spark = new SparkMD5.ArrayBuffer(); fileReader.onload = function() { spark.append(fileReader.result); let hash = spark.end(); resolve(hash); }; fileReader.onerror = function() { reject(fileReader.error); }; fileReader.readAsArrayBuffer(file); }); } // 读取文件并计算MD5 let fileInput = document.querySelector('input[type="file"]'); fileInput.addEventListener('change', function() { let file = fileInput.files[0]; calculateMD5(file).then(hash => { console.log(hash); }).catch(error => { console.error(error); }); }); ``` 在上述代中,我们首先使用ES6的import语法引入了spark-md5库。接着,定义了一个calculateMD5()函数,用于读取文件内容并计算MD5。 在calculateMD5()函数中,我们首先创建了一个FileReader对象,并且定义了onload事件处理函数。当文件读取完成后,该事件处理函数会被调用。 接着,我们使用spark-md5库创建了一个SparkMD5.ArrayBuffer对象,并将读取到的文件内容追加到该对象中。最后,调用SparkMD5.ArrayBuffer对象的end()方法来计算文件MD5值。 需要注意的是,由于文件读取是异步操作,因此calculateMD5()函数返回一个Promise对象,可以使用then()方法来获取计算出的MD5值。 最后,在文件选择框的change事件处理函数中,我们调用了calculateMD5()函数来计算文件MD5,并将结果输出到控制台中。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值