[请益]使用XMLHttpRequest读档案内容时遇到怪问

楼主: winbabu6317 (小鸡旦)   2016-04-10 23:05:41
大家晚安,如题,小弟想要实做一个带有进度条监控进度的下载功能,我使用
XMLHttpRequest 当选择好要下载的档案时,在onprogress state,再开另一个
XMLHttpRequest 去open我想读取档案的url,这个档案里面则填写目前下载的
file size(byte为单位),一开始下载都还算正常,但是我的bar始终在很前面
就停住了(bar一开始有更新,后来就没了),所以想请问板上的前辈们,我这样的
写法到底哪边有不对的地方..
以下是我的程式码:
var x = document.createElement("PROGRESS");
function updbar() {
console.log('Entering updbar.....');
var rawFile = new XMLHttpRequest();
var url
="http://127.0.0.1:8080/features/FileDownload/CentralSRVDB/PXEImages/progress.txt"
rawFile.open("GET", url, true);
//rawFile.responseType = 'text';
rawFile.onreadystatechange = function ()
{
console.log(rawFile.readyState);
if(rawFile.readyState === 4)
{
if(rawFile.status === 200 || rawFile.status === 0)
{
var data = rawFile.responseText;
var jsonResponse = JSON.parse(data);
//read file
console.log(TotalfileSize);
console.log(jsonResponse);
if(jsonResponse != 0){
x.setAttribute("max", TotalfileSize);
x.setAttribute("value", jsonResponse);
document.body.appendChild(x);
}
}
}
}
rawFile.send(null);
}
var TotalfileSize=0;
function TriggerProgressEvent() {//当下载档案时会先call这支function
//var progressBar = document.getElementById('p');
var xhr = new XMLHttpRequest();
//var x = document.createElement("PROGRESS");
console.log('Entering TriggerProgressEvent');
var pxe_list = document.getElementsByName("PXE_Image");
// Deal with PXE image part
for(var i=0;i<pxe_list.length;i++){
//Check whether the diag pkg has selected or not
if(pxe_list[i].checked == true){
console.log(pxe_list[i].value);
xhr.open('GET',
'http://127.0.0.1:8080/features/FileDownload/CentralSRVDB/PXEImages/'+pxe_list[i].value,true);
xhr.responseType = 'blob';
xhr.onprogress = function(event) {
if(event.lengthComputable) {
//console.log(event.total);
//console.log(event.loaded);
//x.setAttribute("max", event.total);
//x.setAttribute("value", event.loaded);
//document.body.appendChild(x);
TotalfileSize=event.total;
setTimeout(updbar, 3000 ); //3000milisecond is 3 second
}
};
xhr.onloadend = function(event) {
//console.log(event.loaded);
x.setAttribute("value", event.loaded);
document.body.appendChild(x);
};
xhr.send();
}
}
}
======================= END ======================
麻烦大家帮我看看了,我找了很久都找不出个所以然,谢谢大家!
作者: peterlai (彼得)   2016-04-11 18:41:00
有没有可能是百分比没算好?!
楼主: winbabu6317 (小鸡旦)   2016-04-11 22:10:00
回一楼,我发现是我读取的txt file档,一下就过了onprogress阶级,所以读到的百分比永远都是刚load进来的档案的byte数

Links booklink

Contact Us: admin [ a t ] ucptt.com