1. 程式人生 > >input標籤上傳圖片到後端前用H5的FileReader 方法實現圖片的顯示

input標籤上傳圖片到後端前用H5的FileReader 方法實現圖片的顯示

要想在頁面上顯示上傳的本地圖片,以前我們的做法是將選擇的圖片檔案上傳至後端伺服器,後端對其進行儲存,再將圖片的URL返回到前端,前端通過介面主要是將檔案讀入記憶體,並提供相應的方法,來讀取檔案中的資料,將讀取的資料放到result中,通多讀取到資料就能實現本地圖片不需上傳就可以顯示。目前高階瀏覽器實現了FileReader介面。

這個URL來顯示圖片。而H5的FileReader介面支援本地預覽,FileReader


例如:(html)

<form action=""><!--action屬性值資料傳到後端的路徑-->
			<label style="color:red;" for="up_img">上傳圖片</label>
<input accept="image/*" type="file" id="up_img" onchange="fileUpLoad(this);"/> <div id="showImg"> </div> </form>

js)

<script type="text/javascript">
		var imgCont = document.getElementById("showImg"); 
		var ipt = document.getElementById("up_img"); 
		function fileUpLoad(_this){
			var file = _this.files[0];
			if(!/image\/\w+/.test(file.type)){ //html中已經用accept='image/*'限制上傳的是圖片了,此處判斷可省略
		        alert("檔案必須為圖片!"); 
		        return false; 
		    } 
			if(!FileReader){
				alert("你的瀏覽器不支援H5的FileReader");
				ipt.setAttribute("disabled","disabled");//瀏覽器不支援禁用input type='file'檔案上傳標籤
				return;
			}
			var fileReader = new FileReader();
			fileReader.readAsDataURL(file);//將檔案讀取為Data URL 讀取結果放在result中
			fileReader.onload = function(e){
				var img = '<img src="'+this.result+'"/>';
				imgCont.innerHTML = img;
				console.log(this.result);
			}
		}
	</script>

通過上面的方法:就實現了圖片不需要上傳就可以顯示本地圖片

FileReader的事件方法引數列表:

事件,方法,引數 描述
方法
1)abort 中斷讀取
2)readAsText(file,[enconding:string]) 將檔案讀取為文字,該方法有兩個引數,第二個引數是檔案編碼格式,預設的是UTF-8,方法很容易理解,將檔案以文字方式讀取,
讀取結果就是這個文字檔案得內容。
3)readAsBinaryString(file) 將檔案讀取為二進位制字串,通常將它傳給後端,後端將通過該欄位儲存檔案
4)readAsDataURL(file) 程式中用到的方法,該方法將檔案讀取為data:開頭的字串,這段字串的實質就是Data URL,
Data URL是一種將小檔案直接嵌入到文件的方案,這裡的小檔案通常是指html和影象等檔案
事件: 描述:
1》onabort/abort 中斷時觸發
2》onerror/error 出錯時觸發
3》onloadstart/loadstart 讀取開始時觸發
4》onload/load 檔案讀取成功完成時觸發
5》onloadend/loadend 檔案讀取成功完成時觸發,無論成功Or失敗
6》onprogress/progress 檔案讀取中

謝謝