作者winbabu6317 (小鸡旦)
看板Web_Design
标题[请益]使用XMLHttpRequest读档案内容时遇到怪问
时间Sun Apr 10 23:05:41 2016
大家晚安,如题,小弟想要实做一个带有进度条监控进度的下载功能,我使用
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 ======================
麻烦大家帮我看看了,我找了很久都找不出个所以然,谢谢大家!
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 59.102.136.36
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Web_Design/M.1460300746.A.A17.html
1F:→ peterlai: 有没有可能是百分比没算好?! 04/11 18:41
2F:→ winbabu6317: 回一楼,我发现是我读取的txt file档,一下就过了onp 04/11 22:10
3F:→ winbabu6317: rogress阶级,所以读到的百分比永远都是刚load进来 04/11 22:10
4F:→ winbabu6317: 的档案的byte数 04/11 22:10