【发布时间】:2011-03-22 02:53:58
【问题描述】:
我正在尝试使用新的 XMLHTTPRequestUpload 功能将一些文件上传到 php 脚本,它大部分工作正常,上传开始,我得到完成响应等 - 但进度似乎不起作用。
查看 event.loaded 值 - 在 Firefox 中,我似乎得到了一个介于 0 和文件大小之间的随机值;在 Chrome 中(我主要工作的地方)我得到了总文件大小,即使 readystate 没有达到“4”并且开发者工具窗口仍然显示要加载的文件?
有什么想法吗?
这是我的代码:
var xhr = new XMLHttpRequest()
xhr.upload.addEventListener('progress', function(event) {
if (event.lengthComputable) {
$('ajaxFeedbackDiv').innerHTML = event.loaded + ' / ' + event.total;
}
}, false);
xhr.onreadystatechange = function(event) {
if (event.target.readyState == 4) {
updateFileList();
}
};
xhr.open("POST", "_code/upload.php");
xhr.setRequestHeader("Cache-Control", "no-cache");
xhr.setRequestHeader("X-Requested-With", "XMLHttpRequest");
xhr.setRequestHeader("X-File-Size", file.size);
xhr.setRequestHeader("X-File-Type", file.type);
xhr.setRequestHeader("Content-Type", "multipart/form-data");
xhr(file);
非常感谢
本
【问题讨论】:
-
您是否找到任何解决方案或解决方法?我目前遇到同样的情况,但这似乎取决于您的网络连接。它在一个位置按预期工作,从另一个位置跳到 100%。
-
我遇到了同样的问题。有趣的是,这似乎只发生在我在本地主机上运行时 - 当我部署到我们的开发或生产服务器时,加载的值会如预期的那样返回。
-
XHR 上传进度从一开始就 100% 仅在本地主机上(我不知道为什么),如果您尝试向远程 Web 服务器或远程服务器发出请求,您会看到明智的进展。
标签: javascript ajax xmlhttprequest