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

首頁 > 編程 > JavaScript > 正文

項目實踐一圖片上傳之form表單還是base64前端圖片壓縮(前端圖片壓縮)

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

第一個項目終于上線了,是一個叫親青籌的公益眾籌平臺,微信端,電腦端還有后臺界面大部分都是我完成的,幾個月過來,感覺收獲了很多,覺得要總結一下。

首先想到的是圖片上傳的問題。在通常表單數據都是ajax上傳的情況下,為了上傳圖片而去使用form表單感覺很蠢。然后那時候也沒有想到用jquery form插件。

后臺的同事給的方案是用iframe里寫一個form表單,然后上傳圖片之后自動提交表單,他將圖片在服務器上的地址以跳轉頁url的一部分,我再來截取的方式。

方案一:iframe+form表單

<form action="/user/uploadIdCard.do" class="fileForm picUpload" enctype="multipart/form-data" method="post"><input type="file" id="uploadPic" name="file"><label for="uploadPic" id="fileBtn">+<img src="" /></label><input type="text" name="turnUrl" class="turnUrl"></form> $(".turnUrl").val(window.location.pathname);$("#uploadPic").on('change', function(event) {event.preventDefault();$("form").submit();});

在需要上傳圖片的界面引入iframe,在調用公用庫里的iframe方法,獲得圖片的url并且把圖片顯示在iframe中

// 提取iframe里的路徑function iframe(el) {var baseurl = "";var code, filePath;var place = $(el)[0].contentWindow.location.search;console.log(place);if (place) {code = place.match(/code=/d+/)[0].substr(5);if (place.match(/filepath=/S+/)) {filePath = place.match(/filepath=/S+/)[0].substr(9);}$(el).contents().find(".tip").css('color', '#d0021b');console.log(filePath);switch (code) {case "200":$(el).contents().find(".tip").text('上傳成功');$(el).contents().find(".tip").css('color', '#55a012');$(el).contents().find("#fileBtn>img").show().attr("src", baseurl + "/" + filePath);return "/" + filePath;case "206":$(el).contents().find(".tip").text('文件過大');break;case "207":$(el).contents().find(".tip").text('文件類型錯誤');break;case "208":$(el).contents().find(".tip").text('系統錯誤');}}}

方案二:后來發現這樣的做法有兩個問題,一個是用戶發的圖片太大,后臺沒有做壓縮(后臺的同事太忙了,為了遷就他們,就我們前端做壓縮了)。

第二個是,上傳圖片成功之后,圖片顯示在iframe上,這樣需要一定的反應時間,使用者有時候會反映圖片傳不上去,其實只是后臺還沒有返回……

于是決定用base64上傳到后臺的方式

<input type="file" id="uploadPic" name="file"><label for="uploadPic" id="fileBtn">+<img class="showPic" src="" /></label><span class="tip">請上傳圖片,大小在2M以內<br/>(圖片類型可為jpg,jepg,png,gif,bmp)<br/>推薦圖片比例為640*400</span><input type="text" name="turnUrl" class="turnUrl"><canvas id="uploadImg" style="display:none"></canvas>

結構和原來差不多,只是多了一個canvas

$("#uploadPic").on('change', function(event) {event.preventDefault();console.log($(this)[0].files);var file = $(this)[0].files[0];if(file.size>2097152){alert("上傳圖片請小于2M");return false;} if (!/image///w+/.test(file.type)) {alert("文件必須為圖片!");return false;}var reader = new FileReader();reader.readAsDataURL(file);reader.onload = function(e) {createCanvas(this.result);}});function createCanvas(src) {var canvas = document.getElementById("uploadImg");var cxt = canvas.getContext('2d');canvas.width = 640;canvas.height = 400;var img = new Image();img.src = src;img.onload = function() {// var w=img.width;// var h=img.height;// canvas.width= w;// canvas.height=h;cxt.drawImage(img, 0, 0,640,400);//cxt.drawImage(img, 0, 0);$(".showPic").show().attr('src', canvas.toDataURL("image/jpeg", 0.9));$.ajax({url: "/front/uploadByBase64.do",type: "POST",data: {"imgStr": canvas.toDataURL("image/jpeg", 0.9).split(',')[1]},success: function(data) {console.log(data);$(".showPic").show().attr('data-url',"/"+ data.url);}});}}

1.首先是用的input的file文件的信息,判斷文件大小file.size,以及文件是否為圖片file.type

2.再通過html5的FileReader接口來獲得這個圖片的base64數據

3.將這個base64傳入canvas中,作為一張圖的src,這時候可以設置圖片的分辨率大小,保證上傳的圖都是統一的分辨率。當然也可以按照圖片原來的大小。

4.在ajax之前,把處理后的base64直接顯示出來(這樣用戶就可以立刻看到自己上傳的圖片),再將 canvas.toDataURL("image/jpeg", 0.9).split(',')[1] (類型為image/jpeg,就可以用第二個參數來設置畫質了)傳到后臺對應的接口

5.再將后臺返回的url 綁在圖片的data-url屬性上,在ajax上交整個表單時獲取這個data-url就好了,這樣用戶可以最快時間看到,而url其實還在ajax到后臺的過程中

后記:這兩個方案都有一個問題,會給后臺上傳很多冗余圖片。不過后臺的同事貌似沒什么意見,亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

国产在线观看91精品一区| 国产精品一区二区三区在线播放| 中文字幕在线国产精品| 亚洲电影在线看| 91久久夜色精品国产网站| 欧美激情免费视频| 亚洲精品日韩久久久| 97碰碰碰免费色视频| 久久免费在线观看| 国产精品高潮在线| 欧美国产日产韩国视频| 国产精品视频公开费视频| 91在线高清视频| 国产啪精品视频网站| 久久99精品久久久久久青青91| 亚洲激情视频网站| 久久久久久999| 欧美性理论片在线观看片免费| 久久精品在线视频| 青青精品视频播放| 国产精品久久久久久久久粉嫩av| 免费不卡在线观看av| 国产精品久久久久久久久久东京| 欧美日韩中文字幕在线| 亚洲久久久久久久久久久| 色婷婷**av毛片一区| 最新国产成人av网站网址麻豆| 欧美激情一区二区久久久| 日韩亚洲精品电影| 国产深夜精品福利| 欧美日韩成人网| 亚洲a级在线播放观看| 亚洲天堂一区二区三区| 国内精品免费午夜毛片| 色阁综合伊人av| 亚洲久久久久久久久久| 国产精品小说在线| 成人免费看吃奶视频网站| 国产成人黄色av| 亚洲男女自偷自拍图片另类| 亚洲欧美资源在线| 欧美日韩国产va另类| 亚洲精品久久久久中文字幕欢迎你| 久久精品国产一区| 亚洲国产精品人人爽夜夜爽| 亚州国产精品久久久| 午夜精品久久17c| 91精品国产免费久久久久久| 国产成人精品视频在线观看| 国产91精品视频在线观看| 亚洲无限av看| 欧美贵妇videos办公室| 日韩av在线免费看| 欧美日韩国产一区二区三区| 久久久这里只有精品视频| 国产99视频精品免视看7| 深夜精品寂寞黄网站在线观看| 91在线国产电影| 亚洲综合精品一区二区| 美女啪啪无遮挡免费久久网站| 国产一区二区在线免费视频| 亚洲白拍色综合图区| 亚洲最新av在线网站| 亚洲女同性videos| 9.1国产丝袜在线观看| 欧美视频在线免费| 青青草国产精品一区二区| 黄色精品在线看| 国产精品一香蕉国产线看观看| 亚洲图片在区色| 久久久免费精品| 亚洲欧美国产一本综合首页| 欧美激情18p| 狠狠躁18三区二区一区| 欧美亚洲视频一区二区| 欧美性猛交xxxx久久久| 亚洲剧情一区二区| 久久久久成人网| 91夜夜未满十八勿入爽爽影院| 亚洲精品美女视频| 国产一区视频在线播放| 亚洲自拍小视频免费观看| 热久久视久久精品18亚洲精品| 久久久av亚洲男天堂| 国产精品一区二区三区免费视频| 亚洲日韩中文字幕在线播放| 国语自产在线不卡| 欧美日韩免费网站| 亚洲成人动漫在线播放| 欧美成年人视频网站欧美| 精品毛片网大全| 国产精品精品久久久久久| 欧美成人激情图片网| 欧美黑人又粗大| 成人精品视频久久久久| 欧美俄罗斯乱妇| 亚洲欧美三级在线| 97免费视频在线播放| 最新国产精品拍自在线播放| 欧美大胆a视频| 欧美日韩高清区| 日韩综合中文字幕| 精品成人av一区| 久久99久国产精品黄毛片入口| 最近中文字幕2019免费| 热久久99这里有精品| 日韩av电影中文字幕| 免费不卡在线观看av| 97精品视频在线观看| 欧美精品在线观看91| 亚洲精品国产精品自产a区红杏吧| 欧美日韩裸体免费视频| 狠狠色香婷婷久久亚洲精品| 国产日韩精品入口| 欧美日韩一二三四五区| 色婷婷av一区二区三区久久| 亚洲人成77777在线观看网| 色综合91久久精品中文字幕| 美女视频久久黄| 欧美激情高清视频| 韩国欧美亚洲国产| 精品视频一区在线视频| 久久免费国产视频| 久久视频免费观看| 青青草一区二区| 久久欧美在线电影| 2025国产精品视频| 欧美性生活大片免费观看网址| 中文字幕一区二区三区电影| 91av在线播放| 国产精品美女午夜av| 亚洲国产成人一区| 情事1991在线| 久久伊人精品天天| 国产精品视频白浆免费视频| 亚洲国产高潮在线观看| 国产一级揄自揄精品视频| 日韩中文在线中文网三级| 色哟哟网站入口亚洲精品| 欧美日韩性视频在线| 91九色精品视频| 成人亚洲欧美一区二区三区| 永久免费精品影视网站| 久久综合伊人77777蜜臀| 日韩精品在线免费观看视频| 中文字幕成人精品久久不卡| 96精品久久久久中文字幕| 国产精品亚洲аv天堂网| 国产精品99蜜臀久久不卡二区| 成人在线观看视频网站| 日韩电影在线观看免费| 欧美视频专区一二在线观看| 久久夜精品香蕉| 91精品国产91久久久久久| 成人精品网站在线观看| 久久久国产一区二区三区| 色无极亚洲影院| 97激碰免费视频| 久久精品国产成人精品| 精品视频在线播放免| 两个人的视频www国产精品| 欧美亚洲激情视频| 亚洲午夜精品久久久久久性色| 欧美特黄级在线|