2012-10-04 24 views
3

我試圖上傳一個文件塊(使用HTML5 File API,slice和XmlHttpRequest2),並向用戶報告進度。XmlHttpRequest上傳進度事件只會一次或太早

問題我已經發現進度事件通常幾乎立即觸發(即使塊大小爲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

忘了提及我在Google Chrome中看到這個 – Ieuan

回答

0

答案 - !沒有什麼錯的代碼。我的電腦有些問題,它可以在另一臺電腦上的相同瀏覽器上正常工作。