婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > Html5實現單張、多張圖片上傳功能

Html5實現單張、多張圖片上傳功能

熱門標簽:洛陽市伊川縣地圖標注中心官網 電銷機器人視頻 標準智能外呼系統 江蘇高頻外呼系統線路 平頂山電子地圖標注怎么修改 會聲會影怎樣做地圖標注效果 地圖標注自己去過的地方 高德地圖標注錯誤怎么修改 搜狗星級酒店地圖標注

前言

今天我們聊一聊圖片上傳,單張Or多張 ,如今,各大圖片上傳插件數不勝數,例如:Jquery的 verupload.js,jQuery File Upload、Uploadify、jQuery.filter等等。But。上面說到的這些插件,今天我們不談,我們來看一看使用HTML5中的FileReader 如何實現 圖片的單張及多張預覽、刪除、上傳等功能。先看下實現后的效果如下:

2|0實現

2|1前端部分

這塊是用戶點擊按鈕 其中我們最重要的一句話是input type=file 和給了一個multiple屬性,可以滿足多張圖片上傳

<div class="form-group form-row">
        <label class="col-sm-2 control-label uText">俱樂部相冊</label><div class="row">
                        <div class="col-xs-10 col-sm-8 mTop5">
                            <label title="上傳俱樂部相冊" for="ClubImagesUpload" id="btnClubImg" class="col-sm-2">
                                <input type="file" accept="image/*" name="ClubImagesUpload" id="ClubImagesUpload" class="hide" multiple="multiple">
                                <img src="/Images/registerNewSite/btn_addimg.png" class="addImg"/>
                            </label>
                        </div>
                    </div></div>

下面這塊區域是用于圖片預覽的

<div class="form-group form-row" id="preViewMore"><div class="row">
      <div class="col-xs-9">
         <div id="clubInputImagePreview" class="col-sm-9 img-preview img-preview-sm"></div>
       </div>
  </div></div>

2|2樣式部分

什么?連樣式你都要看,還有沒有人性(苦笑臉)

2|3Js部分

首先我們分析下上面的html,我們用一個label把input和一個img標簽包起來了,我們希望點擊效果圖那個+號圖片,就能彈出選擇相片的對話框,所以,我們需要先給label來一個點擊事件:

$("#btnClubImg").click(function() {
    //TODO Something
});

接著我們再看,因為我們是要獲取上傳的文件,而我們的文件主要是在input上,所以,我們先將input標簽獲取到:

$("#btnClubImg").click(function() {
      var $input = $("#ClubImagesUpload");
     console.log($input);//打印當前元素
});

我們將當前input元素標簽打印出來看看是個什么東東

我們展開第一項會發現files里面length長度是0

好,我們繼續分析,因為我們想要能當input框改變的時候,說簡單點 就是有選擇到文件的時候,我們能獲取到當前選擇的文件,這個和獲取input框文字輸入是一樣的道理,所以,經過分析,我們知道需要給input標簽加一個change事件:

 $("#btnClubImg").click(function() {
      var $input = $("#ClubImagesUpload");
      console.log($input);
      $input.on("change", function () {
         console.log(this);//打印改變后的當前元素
  });
});   

讓我們來瞄一眼,獲取到改變后的input元素里面有些啥東東:

這里很清楚得可以看到,我們獲取到了選擇的圖片,包括有最后修改事件,圖片名稱,大小以及圖片類型(有了文件類型,我們就可以判斷當前用戶選擇的是否是圖片不是嗎(斜眼笑)) 同樣,這是單個文件的, 如果是多個文件,就會有多個file

接著往下看,通過打印輸出我們可以看到,我們再input 標簽的files元素上已經拿到了我們想要的文件信息,我們只需要獲取它們就行了:

 var files = this.files;
 var length = files.length;

這樣,我們就可以獲取到所有文件,以及文件的個數,那這里問題來了,我們如果是選擇多個文件,如果將其依次輸出并展示到頁面上呢?看到上面標注的四個字,腦袋中有沒有閃現出兩個字呢?循環

 $.each(files, function (key, value) {
        //TOTO Something
  });

通過將上面得到的files 循環,我們可以依次得到每個文件的信息。這樣,你就不僅可以將其依次輸出,如果你愿意,你還可以將其送上天~

var fileReader = new FileReader();//實例化一個FileReader對象
var file_ = files[key];//獲取當前文件
if (/^image\/\w+$/.test(file_.type)) {//將當前文件進行正則匹配,看是否是選擇的圖片
      fileReader.onload = function() {//當讀取操作完成時調用
       }         
} 

有必要延伸下FileReader的知識點:

FileReader主要用于將文件內容讀入內存,通過一系列異步接口,可以在主線程中訪問本地文件。

使用FileReader對象,web應用程序可以異步的讀取存儲在用戶計算機上的文件(或者原始數據緩沖)內容,可以使用File對象或者Blob對象來指定所要處理的文件或數據。

回到主題,我們已經能夠得到文件并且得到返回,所以此時,我們只需要展示返回的結果就行了

$("#clubInputImagePreview").css("background-image", "url(" + this.result + ")");

我們將其this.result打印出來看看是個什么東東:

不言而喻,是將圖片轉換成了Base64的數據格式。最后,我們調用 readAsDataURL 讀取文件內容,將其用data:url字符串表示出來

fileReader.readAsDataURL(value);

這樣,你就可以得到一個簡易的圖片上傳的Demo了,但是并不是最終的,因為你還需要加很多業務進去。比如:得到一張預覽圖片后,當前標簽會被占用,如果下次循環進來,直接使用原標簽,肯定會將之前的圖片替換,那這肯定不是我們想要的效果,我們希望是能依次展示,而不是替換展示。所以,我們還需要做一些處理:

 $("#clubInputImagePreview").css("background-image", "url(" + this.result + ")");
//使用apend再當前元素下追加一個子節點
 $("#clubInputImagePreview") .append("<img src='/Images/registerNewSite/btn_r_del.png' class='clubsImage'  id='ImgRemove' />");
//使用after 向當前兄弟節點 追加一個同級節點                                       
$("#clubInputImagePreview").after( "<div id='clubInputImagePreview1' class='col-sm-9 img-preview img-preview-sm delImg' ></div>");

然后我們追加的刪除圖片,也需要給其點擊事件,讓我們的當前預覽區域消失:

$("#ImgRemove").click(function () {
          $(this).parent().remove();
});

最后,你會發現結果還不是我們想要的,那是因為 當前ID還在,所以無法進行下一步操作,而我們只需要將當前元素的Id Remove掉,然后新增一個同ID的元素,這樣瀏覽器就會認為這是一個新的元素:

 $input.removeAttr("id");
 var newInput ='<input type="file" accept="image/*" name="ClubImagesUpload" id="ClubImagesUpload" class="hide" multiple="multiple">';
 $(this).append($(newInput));

最后完整JS代碼如下:

  var intP = 0;
        $("#btnClubImg").click(function() {
            var $input = $("#ClubImagesUpload");
//            console.log($input);
            $input.on("change",
                function () {
//                    console.log(this);
                    var files = this.files;
                    var length = files.length;
                    if (intP > 8) {
                        layer.msg('圖片不能再多了~', {});
                        return;
                    }
                    $.each(files,
                        function (key, value) {
                            var fileReader = new FileReader();
                            var file_ = files[key];
                            if (/^image\/\w+$/.test(file_.type)) {
                                fileReader.onload = function() {
                                    if (intP > 8) {
                                        layer.msg('圖片不能再多了~', {});
                                        return;
                                    }
                                    if (key == 0 && intP == 0) {
                                        console.log(this.result);
                                        $("#clubInputImagePreview").css("background-image", "url(" + this.result + ")");
                                        $("#clubInputImagePreview")
                                            .append(
                                            "<img src='/Images/registerNewSite/btn_r_del.png' class='clubsImage'  id='ImgRemove' />");
                                        $("#clubInputImagePreview").after(
                                            "<div id='clubInputImagePreview1' class='col-sm-9 img-preview img-preview-sm delImg'></div>");
                                    } else {
                                        $("#clubInputImagePreview" + parseInt(intP) + "").css("background-image",
                                            "url(" + this.result + ")");
                                        $("#clubInputImagePreview" + parseInt(intP) + "").append(
                                            "<img src='/Images/registerNewSite/btn_r_del.png' class='clubsImage'  id='ImgRemove" +
                                            parseInt(parseInt(1) + parseInt(intP)) +"' />");
                                        $("#clubInputImagePreview" + parseInt(intP) + "").after(
                                            "<div id='clubInputImagePreview" +
                                            parseInt(parseInt(1) + parseInt(intP)) +
                                            "'class='col-sm-9 img-preview img-preview-sm delImg' ></div>");
                                    }
                                    if (key == 0 && intP == 0) {
                                        $("#ImgRemove").click(function () {
                                            $(this).parent().remove();
                                        });
                                    } else {
                                        $("#ImgRemove" + parseInt(parseInt(1) + parseInt(intP)) + "").click(function () {
                                            $(this).parent().remove();
                                        });
                                    }
                                    intP += parseInt(1);
                                };
                                fileReader.readAsDataURL(value);
                            } else {
                                layer.msg("格式錯誤<br/>請選擇一個圖片文件");
                            }
                        });
                });
            $input.removeAttr("id");
            var newInput =
                '<input type="file" accept="image/*" name="ClubImagesUpload" id="ClubImagesUpload" class="hide" multiple="multiple">';
            $(this).append($(newInput));
        });

總結

以上所述是小編給大家介紹的Html5實現單張、多張圖片上傳功能,希望對大家有所幫助,如果大家有任何疑問歡迎給我留言,小編會及時回復大家的!

標簽:松原 鄂爾多斯 廣東 廣西 阿克蘇 蚌埠 常德 果洛

巨人網絡通訊聲明:本文標題《Html5實現單張、多張圖片上傳功能》,本文關鍵詞  Html5,實現,單張,多張,圖片,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《Html5實現單張、多張圖片上傳功能》相關的同類信息!
  • 本頁收集關于Html5實現單張、多張圖片上傳功能的相關信息資訊供網民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    成人影视亚洲图片在线| 久久美女高清视频| 成人黄色一级视频| 久久97超碰国产精品超碰| 亚洲观看高清完整版在线观看| 亚洲欧洲精品成人久久奇米网| 久久久精品综合| 国产精品萝li| 亚洲国产视频一区二区| 日本最新不卡在线| 国产精品亚洲综合一区在线观看| 国产91精品免费| 精品视频在线免费看| 精品国产乱码久久久久久夜甘婷婷| 亚洲va中文字幕| 久久99精品国产91久久来源| 亚洲精品欧美激情| 美女尤物国产一区| 一本色道**综合亚洲精品蜜桃冫| 欧美电影在哪看比较好| 国产精品美女久久久久久久久 | 欧美激情资源网| 亚洲香蕉伊在人在线观| 成人免费福利片| 久久精品水蜜桃av综合天堂| 亚洲一区二区三区中文字幕在线| 国产伦理精品不卡| 911国产精品| 偷拍与自拍一区| 在线中文字幕一区| 亚洲日本乱码在线观看| 国产东北露脸精品视频| 精品国产乱码久久久久久夜甘婷婷 | 午夜精品免费在线| 99久久伊人网影院| 精品sm捆绑视频| 国产美女精品一区二区三区| 欧美精品在线一区二区三区| 亚洲天堂精品在线观看| 99天天综合性| 首页国产丝袜综合| 精品日韩在线一区| 国产一区二区视频在线| 欧美国产激情一区二区三区蜜月| 久久99精品国产91久久来源| 精品久久一区二区| 国产高清视频一区| 中文字幕亚洲综合久久菠萝蜜| av一二三不卡影片| 香蕉久久夜色精品国产使用方法| 欧洲av在线精品| 奇米在线7777在线精品| 久久久久久久综合色一本| 99精品国产一区二区三区不卡| 亚洲男人的天堂av| 日韩一级大片在线观看| 成人性生交大合| 图片区小说区区亚洲影院| 中文字幕第一页久久| 欧美日韩国产一级片| 国产一区二区三区免费播放| 亚洲永久免费视频| 久久久久久久久久美女| 欧美日韩国产综合视频在线观看| 极品少妇xxxx精品少妇偷拍 | 久久一区二区三区四区| 成人免费观看av| 麻豆免费精品视频| 午夜精品久久久久久久久久| 亚洲女爱视频在线| 国产亚洲制服色| 欧美精品一区二区三区在线播放| 在线视频欧美精品| 欧美在线免费观看亚洲| 99精品热视频| 色播五月激情综合网| 成人午夜在线播放| av在线不卡网| 色婷婷狠狠综合| 欧美色视频一区| 日韩一级视频免费观看在线| 91精品国产综合久久精品app | 国产精品12区| 成人av在线一区二区| 美国毛片一区二区三区| 秋霞午夜av一区二区三区| 亚洲一区在线观看免费| 亚洲欧美国产毛片在线| 伊人色综合久久天天人手人婷| 中文字幕中文字幕在线一区 | 一区二区三区在线视频免费| 亚洲成av人片在线| 国产精品一区二区无线| 99精品国产热久久91蜜凸| 欧美三级在线视频| 久久影院视频免费| 亚洲精品久久久久久国产精华液| 性久久久久久久久| 国产a视频精品免费观看| 欧美影院午夜播放| 精品处破学生在线二十三| 亚洲欧美另类小说| 精品一区二区三区香蕉蜜桃| 91视视频在线观看入口直接观看www | 亚洲在线免费播放| 美国av一区二区| 欧洲视频一区二区| 久久亚洲免费视频| 一区二区三区不卡视频| eeuss鲁片一区二区三区在线观看| 日本道免费精品一区二区三区| 久久在线观看免费| 欧美aa在线视频| 欧美丰满少妇xxxbbb| 午夜免费欧美电影| 在线不卡的av| 亚洲成人资源在线| 欧美日韩国产一级| 美女网站色91| 久久青草欧美一区二区三区| 视频在线观看一区二区三区| 91视频在线观看免费| 亚洲综合自拍偷拍| 欧洲精品在线观看| 亚洲va欧美va天堂v国产综合| 欧美日韩免费不卡视频一区二区三区| 亚洲视频狠狠干| 欧美日韩mp4| 黄色小说综合网站| 一区免费观看视频| 91.xcao| 不卡免费追剧大全电视剧网站| 亚洲欧洲无码一区二区三区| 免费看欧美美女黄的网站| 日韩欧美高清在线| 国产精品视频yy9299一区| 色哟哟一区二区| 麻豆精品国产传媒mv男同| 精品区一区二区| 一本久道中文字幕精品亚洲嫩| 亚洲一区在线观看免费观看电影高清| 这里只有精品视频在线观看| 丁香啪啪综合成人亚洲小说| 五月婷婷色综合| 国产精品成人免费在线| 日韩亚洲欧美成人一区| 色先锋久久av资源部| 狠狠色丁香久久婷婷综| 天天综合天天做天天综合| 中文字幕巨乱亚洲| 亚洲精品一区二区三区蜜桃下载 | 亚洲成av人**亚洲成av**| 久久综合狠狠综合久久激情| 日韩一区二区三区在线观看| 在线亚洲欧美专区二区| 成人性生交大片| 国产91精品入口| 国产69精品久久777的优势| 国产精品 欧美精品| 一区二区三区自拍| 亚洲美女屁股眼交| 亚洲精品国产a| 亚洲18女电影在线观看| 亚洲国产精品久久一线不卡| 一区二区视频在线看| 亚洲午夜免费福利视频| 日韩一区精品字幕| 奇米综合一区二区三区精品视频| 日本vs亚洲vs韩国一区三区| 人人超碰91尤物精品国产| 激情五月激情综合网| 国产精品一二三四| 一本久道中文字幕精品亚洲嫩| 日本久久一区二区三区| 欧美日韩亚洲综合一区| 精品久久久久久亚洲综合网 | 国产成人精品影视| 成人免费的视频| 欧美日韩国产首页| 久久久久久久久99精品| 亚洲午夜久久久久| 成人蜜臀av电影| 欧美福利视频导航| 国产精品第五页| 黄色成人免费在线| 欧美日韩成人综合| 亚洲男帅同性gay1069| 蜜臀av国产精品久久久久| 99re热视频这里只精品 | 中文字幕色av一区二区三区| 天堂av在线一区| 日本精品视频一区二区| 精品久久久久久久久久久久包黑料 | 成人av电影在线| 久久综合资源网| 日韩国产精品91| 欧美亚洲愉拍一区二区| 亚洲欧美综合色| www.久久精品| 综合婷婷亚洲小说|