【原生javascript】读取文件

FileReader FileReader 接口有3个用来读取文件方法返回结果在result中 :

readAsBinaryString —将文件读取为二进制编码

readAsText —将文件读取为文本

readAsDataURL —将文件读取为DataURL

废话少说,上代码:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>文件读取</title>
</head>
<body>
    <input type="file">

<script>
    var input = document.querySelector("input")
    input.onchange=function(){

        /*
        查看this里的属性
        for(var key in this) {
            console.log(this[key]);
        }
        */
        // 获取文件
        var files = this.files[0];

        // 开始读取,创建读取器
        var reader = new FileReader();

        // 开始读取
        reader.readAsText(files)

        // 文件读取完成后,获取文件内容
        reader.onload = function() {
            // 获取结果
            console.log(reader.result);
        }
    }
</script>
</body>
</html>
JavaScript本身并没有提供计算文件MD5的API,但可以通过引入第三方库来实现该功能。以下是使用第三方库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、付费专栏及课程。

余额充值