图书馆系列:文件-前端文件读取

100 阅读2分钟

前端文件读取方案:

  • js的FileReader对象。

FileReader实现

const file = this.$refs.file.files[0]; // 获取上传的文件对象
const reader = new FileReader(); // 生成文件阅读器
reader.readAsText(file, 'utf8'); // 以utf-8格式阅读,输出文本格式内容
let content = ''; // 用一个变量接收文件阅读器解析出来的内容
reader.onloadend = () => { // 需要在onloadend-读取结束进行处理
    content = reader.result; // 直接读取整个文件内容
}

FileReader的属性

属性说明
error文件读取出错的原因
readyState当前读取文件的状态,0-尚未加载任何数据,1-正在读取,2-读取完成
result文件内容,可能是字符串,也可能是ArrayBuffer实例
onabortfunction,事件,当用户终止读取时触发,
function中也有参数,里面有更多的属性,你可以这么写:reader.onabort = (content) => {console.log(content)} 进行了解,其他事件也是如此。
onerrorfunction,事件,当读取报错时触发
onloadfunction,事件,读取时触发
onloadstartfunction,事件,当开始读取时触发
onloadendfunction,事件,当结束读取时触发
onprogressfunction,事件,当读取进行时触发

FileReader的方法

方法说明
abort()终止读取,readyState会变成2
readAsArrayBuffer(file)传入文件对象或者Blob实例。以ArrayBuffer格式读取,result属性返回一个ArrayBuffer实例。
readAsBinaryString(file)传入文件对象或者Blob实例。result属性返回一个原始的二进制字符串。
readAsDataURL(file)传入文件对象或者Blob实例。 result属性返回一个base64编码的字符串,带有data:*/*;base64格式,比如传入的文件是png格式图片,那么就是:data:image/png;base64推荐读取图片类型格式
readAsText(file, type)第一个参数传入文件对象或者Blob实例,第二个参数传入文本编码,默认:UTF-8。 result属性返回文本内容字符串。推荐读取.txt文本类型格式