现在的编程行业越来越卷了,前后端分离上传文件内容时,需要把上传的文件内容显示在页面上。以前做的excel批量导入设备都是前端把excel信息列出来,然后通过参数的方式提交。最近做的导入json数据内容时,需要把json显示在页面上说是提高用户体验。好吧,那就干!
vue读取本地文件内容主要是用到 FileReader 这个Web API 接口的readAsText方法
FileReader 对象允许Web应用程序异步读取存储在用户计算机上的文件(或原始数据缓冲区)的内容,使用 File 或 Blob 对象指定要读取的文件或数据。参考地址
主要方法有:
FileReader.abort() 中止读取操作。在返回时,readyState属性为DONE。
FileReader.readAsArrayBuffer() 开始读取指定的 Blob中的内容, 一旦完成, result 属性中保存的将是被读取文件的 ArrayBuffer 数据对象.
FileReader.readAsBinaryString() 开始读取指定的Blob中的内容。一旦完成,result属性中将包含所读取文件的原始二进制数据。
FileReader.readAsDataURL() 开始读取指定的Blob中的内容。一旦完成,result属性中将包含一个data: URL格式的Base64字符串以表示所读取文件的内容。
FileReader.readAsText() 开始读取指定的Blob中的内容。一旦完成,result属性中将包含一个字符串以表示所读取的文件内容。
实例
<input ref="file-upload-input" class="file-upload-input" type="file" accept=".json" @change="handleClick">
handleClick(e) {
let _self = this
const files = e.target.files
const rawFile = files[0] // only use files[0]
if (!window.FileReader) return
let reader = new FileReader()
reader.readAsText(rawFile)
reader.onloadend = function () {
_self.importContent = this.result
// 注意这里不能用 this.importContent 来赋值,必需先前面重新定义this为其实名,才能赋值
}
}