我正在尝试上传一大块文件(使用HTML5文件API,切片和XmlHttpRequest2),并向用户报告进度。
我遇到的问题是,进度事件通常会立即触发(即使块大小为5MB),其中'loaded'值等于块的大小。当然,块上传可能需要30秒,在此期间用户没有反馈。
以下代码是否有人可以提供帮助?我几乎真的把头发撕成了这个,但找不到任何遇到同样问题的人!...
var startPosition = (partNumber - 1) * PART_SIZE;
var blob;
if (typeof fileUpload.File.slice != "undefined")
{
blob = fileUpload.File.slice(startPosition, startPosition + contentLength);
}
else
{
if (typeof fileUpload.File.webkitSlice != "undefined")
blob = fileUpload.File.webkitSlice(startPosition, startPosition + contentLength);
if (typeof fileUpload.File.mozSlice != "undefined")
blob = fileUpload.File.mozSlice(startPosition, startPosition + contentLength);
}
fileUpload.PartNumber = partNumber;
var xhr = new XMLHttpRequest();
// Add event listener for progress
xhr.upload.onprogress = function (event)
{
log.debug("progress " + event.loaded);
if (event.lengthComputable)
UpdateProgress(fileUpload, event.loaded);
};
xhr.open("PUT", url, true);
xhr.setRequestHeader('authorization', result);
// Make the request an HTTP PUT
log.debug('Sending PUT request to ' + url);
xhr.send(blob);
答案 0 :(得分:0)
答案 - 代码没有任何问题。我的电脑出了问题,它可以在不同电脑上的同一个浏览器中正常工作。