首頁 > web前端 > H5教程 > 主體

H5完成多圖片上傳的實例詳解

Y2J
發布: 2017-05-24 11:42:01
原創
3882 人瀏覽過

這篇文章主要介紹了基於HTML5實現多張圖片上傳功能,在單張圖片上傳的基礎上實現多張圖片上傳功能,感興趣的小伙伴們可以參考一下

圖片上傳之前也寫過,不過是單張上傳的,最近有個業務需求是需要多張上傳的,於是乎從新改寫了一下

HTML結構:


XML/HTML Code複製內容到剪貼簿

<p class="container">  
    <label>请选择一个图像文件:</label>  
    <input type="file" id="file_input" multiple/>  
</p>
登入後複製

順便說下這個上傳的主要邏輯:

·用input標籤並選擇type=file,記得帶上multiple,不然就只能單選圖片了

·綁定好input的change時間,

·重點就是如何處理這個change事件了,使用H5新的FileReader介面讀取檔案並打成base64編碼,之後的事就是與後端同學互動著玩啦

JS程式碼:


JavaScript Code複製內容到剪貼簿

window.onload = function(){   
        var input = document.getElementById("file_input");   
        var result,p;   
    
        if(typeof FileReader===&#39;undefined&#39;){   
            result.innerHTML = "抱歉,你的浏览器不支持 FileReader";   
            input.setAttribute(&#39;disabled&#39;,&#39;disabled&#39;);   
        }else{   
            input.addEventListener(&#39;change&#39;,readFile,false);   
        }<br>     //handler   
        function readFile(){   
            for(var i=0;i<this.files.length;i++){   
                if (!input[&#39;value&#39;].match(/.jpg|.gif|.png|.bmp/i)){  //判断上传文件格式   
                    return alert("上传的图片格式不正确,请重新选择")<br>          }   
                var reader = new FileReader();   
                reader.readAsDataURL(this.files[i]);   
                reader.onload = function(e){   
                    result = &#39;<p id="result"><img src="&#39;+this.result+&#39;" alt=""/></p>&#39;;   
                    p = document.createElement(&#39;p&#39;);   
                    p.innerHTML = result;   
                    document.getElementById(&#39;body&#39;).appendChild(p);    //插入dom树                      <br>          }   
            }   
        }   
    }
登入後複製

上傳多張圖片就這樣實現了嗎0.0

然而並沒有,這樣只是將圖片轉換成base64編碼後再前端顯示,一刷新什麼都沒有

插入圖片後,打開開發者工具看html結構是這樣的

 

現實的做法是,我們在處理函數裡將檔案佇列裡的檔案傳送到後端,後端同學呢回傳檔案對應的MD5加密過檔案和路徑到前端,前端就拿著這個路徑渲染到頁面上。

之後再把MD5檔案傳回給後端,因為上傳完後前端一般有刪除圖片的操作,回傳目的就是告訴後端確認那些圖片是我們想要的,後端存入資料庫裡。

說下用jquery如何互動吧


#JavaScript Code複製內容到剪貼簿

function readFile(){   
            var fd = new FormData();   
            for(var i=0;i<this.files.length;i++){   
                var reader = new FileReader();   
                reader.readAsDataURL(this.files[i]);   
                fd.append(i,this.files[i]);<br>          }   
                $.ajax({   
                    url : &#39;&#39;,   
                    type : &#39;post&#39;,   
                    data : fd,   
                    success : function(data){   
                        console.log(data)   
                   }    
                })   
}
登入後複製

FormData也是H5的新接口,用來模擬表單控制項的提交,最大的好處呢就是可以提交二進位檔案

然後success的回調裡面我們拿回了想要的資料後呢,就可以將圖片插進去頁啦,類似之前的做法~

上效果圖:

以上就是本文的全部內容,希望對大家的學習有所幫助。

【相關推薦】

1. Html5免費影片教學

2. H5和CSS3組合使用的實例教學

3. 關於H5的事件屬性詳解

4. 詳解H5非常重要的28個新功能,新技巧與新技術

5. H5製作計時器的程式碼示範

以上是H5完成多圖片上傳的實例詳解的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!