js操作文件 HTML5版,有需要的朋友可以參考下。
<!DOCTYPE html> <html> <head> <title>JSFileReader</title> <meta charset="utf-8" > </head> <body> <input accept="image/*" type="file" name="fileImg" id="fileImg" /> <input type="button" onclick="readAsDataURL()" value="readAsDataURL"> <input type="button" onclick="readAsBinaryString()" value="readAsBinaryString"><br><br> <input accept="text/*" type="file" name="fileTxt" id="fileTxt" /> <input type="button" onclick="readAsArrayBuffer()" value="readAsArrayBuffer"> <input type="button" onclick="readAsText()" value="readAsText"><br><br> <input type="file" name="file" id="file" multiple /> <input type="button" onclick="readAttr()" value="readAttr"><br><br> <input type="button" onclick="saveTXT()" value="saveTXT"><br><br> <div id="result"></div> <script type="text/javascript"> var imgs = document.getElementById('fileImg'); var txts = document.getElementById('fileTxt'); var files = document.getElementById('file'); var result = document.getElementById('result'); if (typeof FileReader == 'undefined') { img.disabled = true; txt.disabled = true; file.disabled = true; alert('您的瀏覽器太老了'); }else { var reader = new FileReader(); } function readAsDataURL(){ img = imgs.files[0]; if (typeof img == 'undefined') {alert('選擇對應文件');return;} if (!/image\/\w+/.test(img.type)) {alert('not image');return;} reader.readAsDataURL(img); reader.onload = function (e){ result.innerHTML += "<img src='"+this.result+"'' />"; } } function readAsBinaryString(){ img = imgs.files[0]; if (typeof img == 'undefined') {alert('選擇對應文件');return;} if (!/image\/\w+/.test(img.type)) {alert('not img');return;} reader.readAsBinaryString(img); reader.onload = function (e){ result.innerHTML += this.result; } } function readAsArrayBuffer(){ txt = txts.files[0]; if (typeof txt == 'undefined') {alert('選擇對應文件');return;} if (!/text\/\w+/.test(txt.type)) {alert('not txt');return;} reader.readAsArrayBuffer(txt); reader.onload = function (e){ result.innerHTML += this.result.byteLength+'<br>'+ab2str(this.result); } } // ArrayBuffer轉為字符串,參數為ArrayBuffer對象 function ab2str(buf) { /*Int8Array:8位有符號整數,長度1個字節。 Uint8Array:8位無符號整數,長度1個字節。 Int16Array:16位有符號整數,長度2個字節。 Uint16Array:16位無符號整數,長度2個字節。 Int32Array:32位有符號整數,長度4個字節。 Uint32Array:32位無符號整數,長度4個字節。 Float32Array:32位浮點數,長度4個字節。 Float64Array:64位浮點數,長度8個字節。*/ return String.fromCharCode.apply(null, new Uint8Array(buf)); } // 字符串轉為ArrayBuffer對象,參數為字符串 function str2ab(str) { var buf = new ArrayBuffer(str.length*2); // 每個字符占用2個字節 var bufView = new Uint8Array(buf); for (var i=0, strLen=str.length; i<strLen; i++) { bufView[i] = str.charCodeAt(i); } return buf; } function readAsText(){ txt = txts.files[0]; if (typeof txt == 'undefined') {alert('選擇對應文件');return;} if (!/text\/\w+/.test(txt.type)) {alert('not txt');return;} reader.readAsText(txt,'utf-8'); reader.onloadstart = function (e){ alert('開始讀取...'); } reader.onprogress = function (e){ alert('讀取中...'); //reader.abort(); } reader.onload = function (e){//載入成功 result.innerHTML += this.result; } reader.onloadend = function (e){ alert('載入完成即觸發 不管成功與否'); } reader.onerror = function (e){ alert('讀取出錯時觸發'); } reader.onabort = function (e){ alert('讀取中斷時觸發'); } } function readAttr(){ img = imgs.files[0]; txt = txts.files[0]; if (typeof img == 'undefined' || typeof txt == 'undefined') {alert('選擇對應文件');return;} for(i in img) result.innerHTML += i+"====>"+img[i]+"<br>"; result.innerHTML += "<br>"; for(i in txt) result.innerHTML += i+"====>"+txt[i]+"<br>"; for (var i = 0; i < files.files.length; i++) { var multipleFile = file.files[i]; if (typeof multipleFile == 'undefined') {alert('選擇對應文件');return;} for(j in multipleFile) result.innerHTML += j+"====>"+multipleFile[j]+"<br>"; result.innerHTML += "<br>"; } } function saveTXT(){ if (!result.innerHTML) {alert('沒有數據 無需導出');return;} var URL = URL || webkitURL || window; var bb = new Blob([result.innerHTML],{ "type" : "text\/plain;charset=utf-8" }); // the blob saveAs(bb, 'saveTXT.txt'); } function saveAs(blob, filename){ var type = blob.type; var force_saveable_type = 'application/octet-stream'; if (type && type != force_saveable_type) { // 強制下載,而非在瀏覽器中打開 var slice = blob.slice || blob.webkitSlice || blob.mozSlice; blob = slice.call(blob, 0, blob.size, force_saveable_type); } var url = URL.createObjectURL(blob); var save_link = document.createElementNS('http://www.w3.org/1999/xhtml', 'a');//方法可創建帶有指定命名空間的元素節點。 save_link.href = url; save_link.download = filename; var event = document.createEvent('MouseEvents'); event.initMouseEvent('click', true, false, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null); save_link.dispatchEvent(event); URL.revokeObjectURL(url); } </script> </body> </html>