DIV CSS 佈局教程網

 DIV+CSS佈局教程網 >> 網頁腳本 >> HTML基礎知識 >> HTML5詳解 >> Html5 上傳圖片 移動端、PC端通用
Html5 上傳圖片 移動端、PC端通用
編輯:HTML5詳解     

在博客園注冊賬號有些天了,感覺有些許欣慰,自己寫的東西有人在看,有人在評論很是開心。(ps: 滿足一下虛榮心吧!)

廢話不多說了,說一下今天給大家分享的是 html5上傳圖片。我們是在移動端使用的,但是這個在pc上也通用兼容性我只在谷歌測試過。之前一直用的angular寫的《用Html5的File API做上傳圖片預覽能》。今天摒棄angular的東西分享一個Html5 + JS 圖片上傳案例。那麼今天還是按照一定的步驟來講吧。

HTML 上傳圖片

Html 上傳圖片

Html

第一步創建Html,我們在頁面中放置一個文件選擇的input#upload(PS:偷懶一下,這裡就不再次寫案例了直接復制的我們的頁面)

<div class="con4">
     <span class="btn upload">上傳<input type="file" class="upload_pic" id="upload" /></span>
 </div>

 

CSS

注:CSS 寫的有些亂哈,看不懂的可以問我,或者直接自己寫一下就ok。

復制代碼
.con4{
     width: 80%;
     height: auto;
     overflow: hidden;
     margin: 15% auto 0 auto;
     color: #FFFFFF;
}
.con4 .btn{
     width: 45%;
     height: 40px;
     line-height: 40px;
     text-align: center;
     background: #d8b49c;
     display: block;
     font-size: 16px;
     border-radius: 5px;
}
.upload{
     float: left;
     position: relative;
}
.upload_pic{
     display: block;
     width: 100%;
     height: 40px;
     position: absolute;
     left: 0;
     top: 0;
     opacity: 0;
     border-radius: 5px;
}
復制代碼

Javascript

通過getElementById獲取節點,判斷浏覽器的兼容性,對於不支持FileReader接口的浏覽器將給出一個提示並禁用input,否則監聽input的change事件。

復制代碼
//獲取上傳按鈕
var input1 = document.getElementById("upload"); 
 
if(typeof FileReader==='undefined'){ 
     //result.innerHtml = "抱歉,你的浏覽器不支持 FileReader"; 
     input1.setAttribute('disabled','disabled'); 
}else{ 
     input1.addEventListener('change',readFile,false); 
}
復制代碼

 

然後,當file_input的change事件觸發時,調用函數readFile()。在readFile中,我們首先獲取file對象,然後通過file的type屬性來檢測文件類型,我們當然只允許選擇圖像類型的文件,然後我們new一個FileReader實例,並調用readAsDataURL方法來讀取選中的圖像文件,最後在onload事件中,獲取到成功讀取的文件內容,並以插入一個img節點的方式顯示選中的圖片。

復制代碼
function readFile(){ 
     var file = this.files[0]; 
     if(!/image\/\w+/.test(file.type)){ 
         alert("文件必須為圖片!"); 
         return false; 
     } 
     var reader = new FileReader(); 
     reader.readAsDataURL(file); 
     //當文件讀取成功便可以調取上傳的接口,想傳哪裡傳哪裡(PS: 你們可以把你們的靓照偷偷發給我!)
     reader.onload = function(e){ 
         var data = this.result.split(',');
         var tp = (file.type == 'image/png')? 'png': 'jpg';
         var a = data[1];
         //需要上傳到服務器的在這裡可以進行AJax請求
         ... ...
     }
};
復制代碼

寫到這裡我們已經完成了圖片上傳的功能了,大家有興趣的自己動手嘗試一下,不懂的地方或者我寫錯的地方一定要找我哦。

 

FileReader的方法和事件

參數/事件 描述 方法 abort 中斷讀取 readAsText(file, [encoding]) 將文件讀取為文本
該方法有兩個參數,其中第二個參數是文本的編碼方式,默認值為 UTF-8。這個方法非常容易理解,將文件以文本方式讀取,讀取的結果即是這個文本文件中的內容。 readAsBinaryString(file) 將文件讀取二進制碼
通常我們將它傳送到後端,後端可以通過這段字符串存儲文件 readAsDataURL(file) 將文件讀取為DataURL
將文件讀取為一串Data URL字符串,將小文件以一種特殊格式的URL地址直接讀入頁面。小文件指圖像與Html等格式的文件。 事件 onabort 數據讀取中斷時觸發 onerror 數據讀取出錯時觸發 onloadstart 數據讀取開始時觸發 onload 數據讀取成功完成時觸發 onloadend 數據讀取完成時觸發,無論成功失敗
XML學習教程| jQuery入門知識| AJAX入門| Dreamweaver教程| Fireworks入門知識| SEO技巧| SEO優化集錦|
Copyright © DIV+CSS佈局教程網 All Rights Reserved