input上傳文件 顯示進度條


<style>
#progress_bar {
margin: 10px 0;
padding: 3px;
border: 1px solid #000;
font-size: 14px;
clear: both;
opacity: 0;
-moz-transition: opacity 1s linear;
-o-transition: opacity 1s linear;
-webkit-transition: opacity 1s linear;
}
#progress_bar.loading {
opacity: 1.0;
}
#progress_bar .percent {
background-color: #99ccff;
height: auto;
width: 0;
}
</style>

 

我們在使用異步事件處理時還能順便獲得一項優勢,那就是能夠監控文件的讀取進度;這對於讀取大文件、查找錯誤和預測讀取完成時間非常實用。

onloadstart 和 onprogress 事件可用於監控讀取進度。

以下示例演示了如何通過顯示進度條來監控讀取狀態。要查看進度指示器的實際效果,請嘗試讀取大文件或遠程驅動器中的文件。

 

<input type="file" id="files" name="file" />
<button onclick="abortRead();">取消讀取</button>
<div id="progress_bar"><div class="percent">0%</div></div>

 

<script>
var reader;
var progress = document.querySelector('.percent');

function abortRead() {
reader.abort();
}
// 文件上傳出錯后的函數
function errorHandler(e) {
switch(e.target.error.code) {
case e.target.error.NOT_FOUND_ERR:
alert('文件沒找到');
break;
case e.target.error.NOT_READABLE_ERR:
alert('文件不可讀');
break;
case e.target.error.ABORT_ERR:
break;
default:
alert('讀取文件時出錯');
};
}
// 更新進度條
function updateProgress(e) {
// e 是一個 ProgressEvent.
if (e.lengthComputable) {
var percentLoaded = Math.round((e.loaded / e.total) * 100);
// 更新進度條長度
if (percentLoaded < 100) {
progress.style.width = percentLoaded + '%';
progress.textContent = percentLoaded + '%';
}
}
}
// 選擇上傳文件后的方法
function handleFileSelect(e) {
// 在選擇新文件后重置進度指示器
progress.style.width = '0%';
progress.textContent = '0%';

reader = new FileReader();
reader.onerror = errorHandler;
reader.onprogress = updateProgress;
reader.onabort = function(e) {
alert('已取消讀取');
};
reader.onloadstart = function(e) {
document.getElementById('progress_bar').className = 'loading';
};
reader.onload = function(e) {
// 確保進度條最后顯示100%
progress.style.width = '100%';
progress.textContent = '100%';
setTimeout("alert('文件已讀取成功!')", 0);
}

// 將文件作為二進制字符串讀入
reader.readAsBinaryString(e.target.files[0]);
}

document.getElementById('files').addEventListener('change', handleFileSelect, false);
</script>

 

————————————————
版權聲明:本文為CSDN博主「艾歡歡」的原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/AiHuanhuan110/java/article/details/90607914


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM