JavaSctit 利用FileReader和濾鏡上傳圖片預(yù)覽功能
FileReader 對(duì)象允許Web應(yīng)用程序異步讀取存儲(chǔ)在用戶(hù)計(jì)算機(jī)上的文件(或原始數(shù)據(jù)緩沖區(qū))的內(nèi)容,使用 File或 Blob對(duì)象指定要讀取的文件或數(shù)據(jù)。
1、FileReader接口的方法
FileReader接口有4個(gè)方法,其中3個(gè)用來(lái)讀取文件,另一個(gè)用來(lái)中斷讀取。無(wú)論讀取成功或失敗,方法并不會(huì)返回讀取結(jié)果,這一結(jié)果存儲(chǔ)在result屬性中。
2、FileReader接口事件
FileReader接口包含了一套完整的事件模型,用于捕獲讀取文件時(shí)的狀態(tài)。
重點(diǎn)介紹下:readAsDataURL
開(kāi)始讀取指定的Blob對(duì)象或File對(duì)象中的內(nèi)容. 當(dāng)讀取操作完成時(shí),readyState屬性的值會(huì)成為DONE,如果設(shè)置了onloadend事件處理程序,則調(diào)用之.同時(shí),result屬性中將包含一個(gè)data: URL格式的字符串以表示所讀取文件的內(nèi)容這個(gè)方法很有用,
比如,可以實(shí)現(xiàn)圖片的本地預(yù)覽
IE10以下的版本不支持FileReader()構(gòu)造函數(shù).不過(guò)可以利用濾鏡來(lái)兼容舊版本的IE:兼容IE的圖片本地預(yù)覽.
<!doctype html> <html> <head> <meta content="text/html; charset=UTF-8" http-equiv="Content-Type" /> <title>Image preview example</title> <script type="text/javascript"> var loadImageFile = (function () { if (window.FileReader) { var oPreviewImg = null, oFReader = new window.FileReader(), rFilter = /^(?:image\/bmp|image\/cis\-cod|image\/gif|image\/ief|image\/jpeg|image\/jpeg|image\/jpeg|image\/pipeg|image\/png|image\/svg\+xml|image\/tiff|image\/x\-cmu\-raster|image\/x\-cmx|image\/x\-icon|image\/x\-portable\-anymap|image\/x\-portable\-bitmap|image\/x\-portable\-graymap|image\/x\-portable\-pixmap|image\/x\-rgb|image\/x\-xbitmap|image\/x\-xpixmap|image\/x\-xwindowdump)$/i; oFReader.onload = function (oFREvent) { if (!oPreviewImg) { var newPreview = document.getElementById("imagePreview"); oPreviewImg = new Image(); oPreviewImg.style.width = (newPreview.offsetWidth).toString() + "px"; oPreviewImg.style.height = (newPreview.offsetHeight).toString() + "px"; newPreview.appendChild(oPreviewImg); } oPreviewImg.src = oFREvent.target.result; }; return function () { var aFiles = document.getElementById("imageInput").files; if (aFiles.length === 0) { return; } if (!rFilter.test(aFiles[0].type)) { alert("You must select a valid image file!"); return; } oFReader.readAsDataURL(aFiles[0]); } } if (navigator.appName === "Microsoft Internet Explorer") { return function () { document.getElementById("imagePreview").filters.item("DXImageTransform.Microsoft.AlphaImageLoader").src = document.getElementById("imageInput").value; } } })(); </script> <style type="text/css"> #imagePreview { width: 160px; height: 120px; float: right; filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(sizingMethod=scale); } </style> </head> <body> <div id="imagePreview"></div> <form name="uploadForm"> <p><input id="imageInput" type="file" name="myPhoto" onchange="loadImageFile();" /><br /> <input type="submit" value="Send" /></p> </form> </body> </html>
看看在IE7下的效果
谷歌的效果
很好,都很完美。具體參考鏈接:https://developer.mozilla.org/zh-CN/docs/Web/API/FileReader
總結(jié)
以上所述是小編給大家介紹的JavaSctit 利用FileReader和濾鏡上傳圖片預(yù)覽功能,希望對(duì)大家有所幫助,如果大家有任何疑問(wèn)請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!
相關(guān)文章
擴(kuò)展javascript的Date方法實(shí)現(xiàn)代碼(prototype)
長(zhǎng)期從事C#的開(kāi)發(fā),被C#影響著我的思維。C#中DateTime的操作就很方便,于是就參考它對(duì)js的Date做了擴(kuò)展。2010-11-11超強(qiáng)推薦的js編程中的簡(jiǎn)潔寫(xiě)法收集
超強(qiáng)推薦的js編程中的簡(jiǎn)潔寫(xiě)法收集...2007-08-08靈活使用數(shù)組制作圖片切換js實(shí)現(xiàn)
這篇文章主要介紹了靈活使用數(shù)組制作圖片切換效果,js實(shí)現(xiàn)圖片切換特效,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-07-07JavaScript中合并Object的三種基本方法小結(jié)
在開(kāi)發(fā)過(guò)程中,我們經(jīng)常會(huì)遇到合并對(duì)象的需求,今天我們就來(lái)了解一下合并對(duì)象的幾種基本方法,文中通過(guò)代碼示例介紹的非常詳細(xì),感興趣的小伙伴跟著小編一起來(lái)看看吧2023-08-08JavaScript中的console.assert()函數(shù)介紹
這篇文章主要介紹了JavaScript中的console.assert()函數(shù)介紹,assert()函數(shù)是一個(gè)調(diào)試中經(jīng)常使用的斷言工具函數(shù),需要的朋友可以參考下2014-12-12小程序與內(nèi)嵌webview的數(shù)據(jù)交互方案詳解
這篇文章主要介紹了小程序與內(nèi)嵌webview的數(shù)據(jù)交互方案,為實(shí)現(xiàn)H5頁(yè)面到小程序的無(wú)縫切換,技術(shù)方案包含使用webview交互,特別是低碼C端表單頁(yè)面的處理,需要的朋友可以參考下2024-09-09鼠標(biāo)左鍵單擊沖突的問(wèn)題解決方法(防止冒泡)
一個(gè)頁(yè)面實(shí)現(xiàn)了兩種右鍵菜單,當(dāng)鼠標(biāo)左鍵單擊空白處時(shí),右鍵菜單并不隱藏,下面為大家解決鼠標(biāo)左鍵單擊沖突的問(wèn)題2014-05-05