亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > JavaScript > 正文

JS上傳圖片預覽插件制作(兼容到IE6)

2019-11-20 09:17:20
字體:
來源:轉載
供稿:網友

一、實現圖片預覽的一些方法。

了解了一下,其實方法都是大同小異的。大概有以下幾種方式:

①訂閱input[type=file]元素的onchange事件.

一旦選擇的路徑被改變就把圖片上傳至服務器,然后就返回圖片在服務器端的地址,并且賦值到img元素上。

缺點:工作量大,有些上傳并不是用戶最終需要上傳的圖片,但是這種方式會把上傳過程中選擇過的圖片都保存至服務器端,會造成資源浪費,而且服務器端清理臨時的那些預覽圖片也需要一定的工作量。

②利用HTML5的新特性FileReader。

這個對象提供了很多相關的方法,其中最主要用到readAsDataURL這個方法。點我了解更多。

缺點:通過FileReader的readAsDataURL方法獲取的Data URI Scheme會生成一串很長的base64字符串,若圖片較大那么字符串則更長,若頁面出現reflow時則會導致性能下降。且瀏覽器支持情況不一致,支持的瀏覽器:FF3.6+,Chrome7+,IE10+。

③使用window.URL.createObjectURL代替FileReader,再用DXImageTransform.Microsoft.AlphaImageLoader濾鏡兼容IE。

缺點:由于IE11作了安全方面的考慮,使得在input[type=file]元素上通過value、outerHTML和getAttribute的方式都無法獲取用戶所選文件的真實地址,只能獲取到

D:/frontEnd/文件名稱。因此需使用document.selection.createRangeCollection方法來獲取真實地址。

二、我的插件制作

我選擇了比較保守的方法,就是第三種使用window.URL.createObjectURL代替FileReader,再用DXImageTransform.Microsoft.AlphaImageLoader濾鏡兼容IE的方法啦。

①第一步,HTML的布局

<div id="pic"><img id="preview" src="../imgs/default.jpeg"></div><input type="file" id="uploadBtn" accept="image/*" onchange="setPreviewPic()">

是不是想說so easy?

②第二步,插件js封裝。

1、建立對象

我主要采用了組合繼承的方式,封裝了兩個方法,分別是單張圖片上傳和多張圖片上傳。因為無論是單張圖片上傳還是單張圖片上傳,都需要傳入、上傳圖片的input按鈕、img標簽、包裹著img的div、最大的單張照片的值,單位為KB。所以這四個參數在創建上傳圖片對象的時候就要傳入。創建該對象的方法如下:

var SetPreviewPic=function(fileObj,preview,picWrap,maxImgSize){this.fileObj=fileObj;this.preview=preview;this.picWrap=picWrap;this.maxImgSize=maxImgSize;}

2、定義匹配模式

因為是上傳圖片,除了在input里面加了accept="image/*",做了初步限制之外,還需要一個js的正則來通過路徑的檢測來判定是否為圖片。所以在prototype上面定義該模式以供兩個方法使用:

SetPreviewPic.prototype.pattern=new RegExp('/.(jpg|png|jpeg)+$','i');

3、定義方法

主要就是判斷是否低于IE11的環境,編寫兩類方案。第一種就是直接通過改變img的src來預覽圖片,第二種就是在低版本的IE下,通過濾鏡來達到預覽效果。

FF、Chrome、IE11以上:(這里貼出多張圖片預覽的代碼)

<span class="Apple-tab-span"> if(maxPics){</span> <br> if(this.fileObj.files && this.fileObj.files[0]){var imgs=this.picWrap.querySelectorAll('img'); //查找DOM里面已經有多少張圖片了var num=imgs.length;var html=this.picWrap.innerHTML;if(Number(num)<Number(maxPics)){ //判斷是否超過最大上傳限度if(num==1&&(!imgs[0].classList.contains('newLoad'))){ //覆蓋第一張默認圖片html='';}if(this.pattern.test(fileObj.files[0].name)){if(judgeSize(fileObj.files[0].size/1024,this.maxImgSize)){//判斷圖片的大小是否超限html='<img class="newLoad" style="margin:5px;width:'+width+'px;height:'+height+'px;" src='+window.URL.createObjectURL(this.fileObj.files[0])+' />'+html;this.picWrap.innerHTML=html;}else{alert('你上傳的圖片太大!');}}else{alert('你上傳的好像不是圖片哦,請檢查!');}}else{alert('每次最多上傳'+maxPics+'張圖片!');}}

IE11下利用濾鏡達到效果:

var nums=this.picWrap.childNodes.length;//因為IE6以下不支持querySelectorAll等方法,就通過childNodes的長度判斷if(nums<maxPics+2){//這里加2是因為本來有一張默認的圖片,而且childNodes讀出來的長度會多1this.fileObj.select();if(document.selection){var imgSrc=document.selection.createRange().text;var image=new Image(); image.src=imgSrc; filesize=image.fileSize; if(judgeSize(image.fileSize/1024,this.maxImgSize)){//IE下必須設置div的大小var ele=document.createElement('div');ele.style.width=width+'px';ele.style.height=height+'px';ele.style.filter="progid:DXImageTransform.Microsoft.AlphaImageLoader(sizingMethod=scale,src='"+imgSrc+"')";try{this.picWrap.appendChild(ele);}catch(e){alert('你上傳的圖片格式有誤,請重新選擇!');return false;}this.preview.style.display='none';document.selection.empty();}else{alert('你上傳的圖片太大!');}}

至此,就完成啦!

用法:

<script type="text/javascript" src="../js/singlePic.js"></script><script>var fileObj=document.getElementById('uploadBtn');var preview=document.getElementById('preview');var picWrap=document.getElementById('pic');fileObj.onchange=function(){var obj=new SetPreviewPic(fileObj,preview,picWrap,100);//定義上傳圖片對象,參數分別為上傳圖片的input按鈕、img標簽包、裹著img的div、最大的單張照片的值,單位為KBobj.uploadSinglePic(200,250);//單張圖片上傳,參數分別為每張的寬度、高度// obj.uploadPics(200,250,2); //多張圖片上傳,參數分別為每張的寬度、高度、最多上傳張數}</script>

以上所述是小編給大家介紹的JS上傳圖片預覽插件制作(兼容到IE6)的相關知識,希望對大家有所幫助,如果大家有任何疑問歡迎給我留言,小編會及時回復大家的!

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产亚洲精品一区二555| 欧洲成人免费视频| 国产成人午夜视频网址| 日韩欧美aⅴ综合网站发布| 日韩av片永久免费网站| 永久免费看mv网站入口亚洲| 欧美日本高清一区| 久久成人av网站| 日韩专区在线观看| 亚洲精品网站在线播放gif| 国产精品久久久久91| 91免费欧美精品| 精品国产区一区二区三区在线观看| 中文字幕日韩电影| 色小说视频一区| 91国产精品91| 国产亚洲欧美日韩美女| 亚洲日本aⅴ片在线观看香蕉| 不卡av日日日| 亚洲在线视频福利| 疯狂欧美牲乱大交777| 最近2019年中文视频免费在线观看| 亚洲视频在线看| 国产精品久久久久久久久久东京| 成人av电影天堂| 成人在线视频网站| 亚洲精品自拍第一页| 这里只有精品久久| 在线播放国产一区中文字幕剧情欧美| 日韩av电影免费观看高清| 国产精品第8页| 尤物yw午夜国产精品视频明星| 91av在线网站| 亚洲国产精品福利| 国产精品吊钟奶在线| 欧美俄罗斯性视频| 亚洲影视九九影院在线观看| 日韩在线不卡视频| 国产一区二区丝袜高跟鞋图片| 视频直播国产精品| 久久久之久亚州精品露出| 高清欧美性猛交| 国产一区香蕉久久| 性欧美在线看片a免费观看| 一色桃子一区二区| 在线观看国产精品日韩av| 欧美精品在线免费播放| 国产精品吴梦梦| 亚洲 日韩 国产第一| 欧美性极品xxxx做受| 久久久亚洲欧洲日产国码aⅴ| 亚洲黄色有码视频| 欧美午夜久久久| 亚洲已满18点击进入在线看片| 国产视频自拍一区| 中文字幕在线看视频国产欧美在线看完整| 国产盗摄xxxx视频xxx69| 91网站免费看| 欧美疯狂xxxx大交乱88av| 欧美黑人一级爽快片淫片高清| 日产日韩在线亚洲欧美| 国产香蕉一区二区三区在线视频| 日韩欧美在线观看视频| 亚洲欧美另类自拍| 精品一区二区三区四区在线| 欧美黑人巨大精品一区二区| 国产成人97精品免费看片| 日韩大陆欧美高清视频区| 97超级碰碰人国产在线观看| 国产精品久久婷婷六月丁香| 亚洲成人激情视频| 欧美另类精品xxxx孕妇| 久久久久久久电影一区| 丝袜一区二区三区| 欧美久久精品午夜青青大伊人| 18性欧美xxxⅹ性满足| 在线看国产精品| 97欧美精品一区二区三区| 亚洲国产精品成人va在线观看| 午夜精品久久久久久久久久久久久| …久久精品99久久香蕉国产| 亚洲无限乱码一二三四麻| 日韩国产精品亚洲а∨天堂免| 亚洲第一区中文99精品| 日韩av一区在线| 久久国产精品久久国产精品| 欧美视频在线观看 亚洲欧| 欧美一区三区三区高中清蜜桃| 中文字幕亚洲综合| 国产精品成熟老女人| 亚洲色图欧美制服丝袜另类第一页| 欧美高清性猛交| 国产不卡精品视男人的天堂| 亚洲精品国产美女| 国产日韩欧美中文| 日韩av在线免费观看| 欧洲日韩成人av| 欧美在线视频播放| 成人免费视频网址| 91午夜在线播放| 国产一区二区三区在线播放免费观看| 精品国产一区二区三区久久狼黑人| 成人免费视频97| 欧美资源在线观看| 日韩亚洲欧美中文在线| 中文字幕不卡av| 久久国内精品一国内精品| 亚洲欧洲在线视频| 色哟哟入口国产精品| 亚洲国产精久久久久久久| 日韩电影免费在线观看| 精品久久久视频| 亚洲色图校园春色| 在线视频中文亚洲| 国模吧一区二区三区| 久久琪琪电影院| 欧美精品激情在线| 日韩激情av在线播放| 88国产精品欧美一区二区三区| 国模极品一区二区三区| 色噜噜亚洲精品中文字幕| 亚洲二区在线播放视频| 国产精品一区二区三区在线播放| 91影视免费在线观看| 国产精品尤物福利片在线观看| 久久久久久999| 欧美日韩亚洲视频一区| 91免费看国产| 久久精品精品电影网| 亚洲成色777777在线观看影院| 91精品在线观看视频| 欧美日韩美女在线观看| 亚洲午夜女主播在线直播| 久久久女人电视剧免费播放下载| 最近免费中文字幕视频2019| 色悠悠国产精品| 亚洲精品99999| 日韩成人xxxx| 成人午夜激情网| 精品福利一区二区| 91在线观看免费| 国产精品视频色| 国产精品美女在线观看| 在线视频欧美日韩精品| 亚洲乱码av中文一区二区| 日韩专区在线播放| 高清欧美一区二区三区| 中文在线资源观看视频网站免费不卡| 国产美女直播视频一区| 亚洲成人精品视频在线观看| 精品国产乱码久久久久久天美| 欧美性色xo影院| 国产精品久久久久9999| 色悠悠久久88| 精品成人国产在线观看男人呻吟| 黑人巨大精品欧美一区二区三区| 亚洲图片制服诱惑| 精品久久中文字幕| 国产999精品视频| 国产欧美一区二区白浆黑人| 在线a欧美视频| 欧洲一区二区视频| 国产精品第8页| 国产精品视频免费观看www|