例子javascript
FileReader.error
表示在讀文件操做過程當中發生的錯誤FileReader.readyState
表示FileReader
讀取數據的狀態,有三個值:css
EMPTY:沒有數據被加載html
LOADING:數據正在被加載java
LOADING:數據正在被加載git
FileReader.result
表明數據讀取完成後的結果,只有在數據被加載完成後,result屬性纔有效。github
FileReader.onbort
在FileReader
的reading
操做被中斷的時候觸發。FileReader.onerror
在FileReader
讀取數據過程當中發生錯誤時觸發FileReader.onload
在FileReader
讀取事件完成後調用FileReader.onloadstart
在FileReader
讀取事件開始時調用FileReader.onloadend
在FileReader
讀事件完成後調用FileReader.onprogress
在FileReader
讀取數據的過程當中調用web
FileReader.abort()
中斷讀數據操做,直接返回,readyState將被設置爲DONEFileReader.readAsArrayBuffer()
讀取Blob類型的數據,讀取完成後返回ArrayBuffer對象,ArrayBuffer對象存儲數據內容。FileReader.readAsBinaryString()
讀取一個Blob對象,將Blob對象中的原始二進制數據做爲字符串的形式返回。FileReader.readAsDataURL()
返回一個表明文件數據的URLFileReader.readAsTextString()
讀取一個Blob對象,返回一個文本字符串。flex
一個拖拽事件的demo,參考MDNcode
<!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>