DIV CSS 佈局教程網

 DIV+CSS佈局教程網 >> 網頁腳本 >> HTML基礎知識 >> HTML5詳解 >> Html5 FileReader實現即時上傳圖片功能實例代碼
Html5 FileReader實現即時上傳圖片功能實例代碼
編輯:HTML5詳解     
這篇文章主要介紹了Html5 FileReader實現即時上傳圖片功能,因為項目只要求在ie9以上,所以就沒有寫出IE8的啦,需要的朋友可以參考下 下面的是在ie9下面實現的預覽,跟ie8還是不一樣的,不過我記得貌似ie8好像也是利用了fiter的功能,因為項目只要求在ie9以上,所以就沒有寫出IE8的啦 

復制代碼代碼如下:
<!DOCTYPE Html> 
<Html lang="en"> 
<head> 
<meta charset="UTF-8"> 
<title>Document</title> 
</head> 
<body> 
<p><style type="text/CSS"> 
#kk{ 
width:400px; 
height:400px; 
overflow: hidden; 

#prevIEw_wrapper{ 
width:300px; 
height:300px; 
background-color:#CCC; 
overflow: hidden; 

#preview_fake{ /* 該對象用於在IE下顯示預覽圖片 */ 
filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(sizingMethod=scale); 
width:300px; 
overflow: hidden; 

#preview_size_fake{ /* 該對象只用來在IE下獲得圖片的原始尺寸,無其它用途 */ 
filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(sizingMethod=image); 
width:300px; 
visibility:hidden; 
overflow: hidden; 

#prevIEw{ /* 該對象用於在FF下顯示預覽圖片 */ 
width:300px; 
height:300px; 
overflow: hidden; 

</style><script type="text/Javascript"> 
function onUploadImgChange(sender){ 
if( !sender.value.match( /.jpg|.gif|.png|.bmp/i ) ){ 
alert('圖片格式無效!'); 
return false; 

var objPreview = document.getElementById('prevIEw'); 
var objPreviewFake = document.getElementById('prevIEw_fake'); 
var objPreviewSizeFake = document.getElementById('prevIEw_size_fake'); 
if( sender.files && sender.files[0] ){ //這裡面就是Chrome和ff可以兼容的了 
objPrevIEw.style.display = 'block'; 
objPrevIEw.style.width = 'auto'; 
objPrevIEw.style.height = 'auto'; 
// Firefox 因安全性問題已無法直接通過 input[file].value 獲取完整的文件路徑 
objPrevIEw.src = sender.files[0].getAsDataURL(); 
}else if( objPrevIEwFake.filters ){ 
// IE7,IE8 在設置本地圖片地址為 img.src 時出現莫名其妙的後果 
//(相同環境有時能顯示,有時不顯示),因此只能用濾鏡來解決 
// IE7, IE8因安全性問題已無法直接通過 input[file].value 獲取完整的文件路徑 
sender.select(); 
sender.blur(); 
var imgSrc = document.selection.createRange().text; 
objPrevIEwFake.filters.item('DXImageTransform.Microsoft.AlphaImageLoader').src = imgSrc; 
objPrevIEwSizeFake.filters.item('DXImageTransform.Microsoft.AlphaImageLoader').src = imgSrc; 
alert("已成功選擇圖片!"); 
alert(objPrevIEwSizeFake.offsetWidth); 
autoSizePreview( objPreviewFake,objPreviewSizeFake.offsetWidth, objPrevIEwSizeFake.offsetHeight ); 
objPrevIEw.style.display = 'none'; 


function onPrevIEwLoad(sender){ 
autoSizePrevIEw( sender, sender.offsetWidth, sender.offsetHeight ); 

function autoSizePrevIEw( objPre, originalWidth, originalHeight ){ 
var zoomParam = clacImgZoomParam( 300, 300, originalWidth, originalHeight ); 
objPre.style.width = zoomParam.width + 'px'; 
objPre.style.height = zoomParam.height + 'px'; 
objPre.style.marginTop = zoomParam.top + 'px'; 
objPre.style.marginLeft = zoomParam.left + 'px'; 

function clacImgZoomParam( maxWidth, maxHeight, width, height ){ 
var param = { width:width, height:height, top:0, left:0 }; 
if( width>maxWidth || height>maxHeight ){ 
rateWidth = width / maxWidth; 
rateHeight = height / maxHeight; 
if( rateWidth > rateHeight ){ 
param.width = maxWidth; 
param.height = height / rateWidth; 
}else{ 
param.width = width / rateHeight; 
param.height = maxHeight; 


param.left = (maxWidth - param.width) / 2; 
param.top = (maxHeight - param.height) / 2; 
return param; 

</script> <input name="localfile" type="file" id="localfile" size="28" onchange="onUploadImgChange(this)"/> <!--以下是預覽圖片用的--> 
<div id="kk"> 
<div id="prevIEw_wrapper"> 
<div id="prevIEw_fake"> 
<img id="preview" src="" onload="onPrevIEwLoad(this)"/> 
</div> 
</div> 
<br/> 
<img id="prevIEw_size_fake" /> 
</div></p> 
</body> 
</Html> 
XML學習教程| jQuery入門知識| AJAX入門| Dreamweaver教程| Fireworks入門知識| SEO技巧| SEO優化集錦|
Copyright © DIV+CSS佈局教程網 All Rights Reserved