FileReader语法
属性
FileReader.error
表示在读文件操作过程中发生的错误FileReader.readyState
表示FileReader
读取数据的状态,有三个值:
EMPTY:没有数据被加载
LOADING:数据正在被加载
LOADING:数据正在被加载
FileReader.result
代表数据读取完成后的结果,只有在数据被加载完成后,result属性才有效。
事件
FileReader.onbort
在FileReader
的reading
操作被中断的时候触发。FileReader.onerror
在FileReader
读取数据过程中发生错误时触发FileReader.onload
在FileReader
读取事件完成后调用FileReader.onloadstart
在FileReader
读取事件开始时调用FileReader.onloadend
在FileReader
读事件完成后调用FileReader.onprogress
在FileReader
读取数据的过程中调用
方法
FileReader.abort()
中断读数据操作,直接返回,readyState将被设置为DONEFileReader.readAsArrayBuffer()
读取Blob类型的数据,读取完成后返回ArrayBuffer对象,ArrayBuffer对象存储数据内容。FileReader.readAsBinaryString()
读取一个Blob对象,将Blob对象中的原始二进制数据作为字符串的形式返回。FileReader.readAsDataURL()
返回一个代表文件数据的URLFileReader.readAsTextString()
读取一个Blob对象,返回一个文本字符串。
Demo
一个拖拽事件的demo,参考MDN
<!DOCTYPE html> <html> <head> <title>文件拖拽</title> <style type="text/css" rel="stylesheet"> *{ margin:0 auto; } html,body{ width:100%; height:100%; } #container{ width:100%; height:100%; display:flex; display:-webkit-flex; justify-content:center; align-items:center; flex-direction:columns; } #child{ border:2px solid; width:400px; height:200px; } input{ width:200px; height:40px; margin-top:20px; margin-left:10px; } p{ width:20px; width:40px; margin-left:10px; margin-top:20px; } a{ display:inline-block; height:30px; width:200px; margin-top:20px; margin-left:10px; } </style> </head> <body> <div id="container"> <div id="child"> <h3>实现拖拽</h3> <input id="nfiles" type="file" multiple/> <p id="showfilesize">Size:</p> </div> </div> <script type="text/javascript"> var pElement = document.getElementById('showfilesize'); var fileInputElement=document.getElementById('nfiles'); function change(files){ var nLen = files.length,nFile,nBytes=0,sOut='',middleSize; for(var i=0;i<nLen;i++){ nFile=files[i]; nBytes+=nFile.size; } sOut=nBytes+"bytes"; for(var unitIndex=0,units=["KiB", "MiB", "GiB", "TiB", "PiB", "EiB", "ZiB", "YiB"],middleSize=nBytes;middleSize/=1000,middleSize>1;unitIndex++){ sOut=middleSize.toFixed(3)+units[unitIndex]+"("+nBytes+"byte"+")"; } pElement.innerHTML='size:'+sOut; } //监听拖拽事件 fileInputElement.addEventListener('dragenter',dragEnter,false); fileInputElement.addEventListener('dragover',dragOver,false); fileInputElement.addEventListener('drop',drop,false); function dragEnter(e){ e.stopPropagation(); e.preventDefault(); } function dragOver(e){ e.stopPropagation(); e.preventDefault(); } function drop(e){ e.stopPropagation(); e.preventDefault(); var dt=e.dataTransfer; var files=dt.files; change(files); } </script> </body> </html>