一、选取文件
使用reader.onload读取文件内容时,首先需要选取文件。在HTML中可以使用<input type="file">来实现。需要注意的是,为了防止部分浏览器的兼容性问题,需要在form标签中添加属性enctype="multipart/form-data"。具体代码如下:
<form enctype="multipart/form-data"> <input type="file" id="file" name="file"> </form>
二、读取文件内容
读取文件内容时,可以使用FileReader.readAsText()方法。该方法会将文件内容读取为字符串。需要注意的是,FileReader.readAsText()是异步方法,需要在onload事件中获取文件内容。具体代码如下:
let fileInput = document.getElementById('file'); fileInput.addEventListener('change', (e) => { let file = e.target.files[0]; let reader = new FileReader(); reader.readAsText(file); reader.onload = (e) => { console.log(e.target.result); } });
三、读取二进制文件内容
如果需要读取二进制文件内容,可以使用FileReader.readAsArrayBuffer()方法。该方法会将二进制文件内容读取为ArrayBuffer对象。需要注意的是,ArrayBuffer对象并不能直接显示,需要使用TypedArray或DataView进行解析。具体代码如下:
let fileInput = document.getElementById('file'); fileInput.addEventListener('change', (e) => { let file = e.target.files[0]; let reader = new FileReader(); reader.readAsArrayBuffer(file); reader.onload = (e) => { let buffer = e.target.result; let dataView = new DataView(buffer); console.log(dataView.getInt32(0)); } });
四、读取图片文件内容
读取图片文件内容时,可以使用FileReader.readAsDataURL()方法。该方法会将图片文件内容读取为Base64编码的字符串。使用标签可以直接显示该图片。具体代码如下:
let fileInput = document.getElementById('file'); fileInput.addEventListener('change', (e) => { let file = e.target.files[0]; let reader = new FileReader(); reader.readAsDataURL(file); reader.onload = (e) => { let img = document.createElement('img'); img.src = e.target.result; document.body.appendChild(img); } });