2013-03-05 8 views
0

我試圖獲得的lighttpd 1.5上班上傳進度模塊,但我遇到了一個奇怪的問題:在lighttpd的上傳進度沒有反應

當我開始上傳「/響應」獲取調用每一秒與X-Progress-ID頭部集合,但我沒有得到任何迴應。 GET調用只是加載和加載,但沒有得到任何迴應。 如果手動調用它(localhost/response?X-Progress-ID = someID),它看起來是正確的,並且接收和總的值是正確的並且被設置。 當我然後取消上傳進度(通過瀏覽器中的「X」按鈕)/響應不斷被調用,但現在它將返回狀態200,但當然,沒有設置正確的值。

這裏是我的代碼:

的Javascript:

interval = null; 

    function openProgressBar(uuid) { 

     /* call the progress-updater every 1000ms */ 

     interval = window.setInterval(
      function() { 
       fetch(uuid); 
       }, 
       1000 
     ); 
    } 

    function fetch(uuid) { 
     req = new XMLHttpRequest(); 
     req.open("GET", "/progress", 1); 
     req.setRequestHeader("X-Progress-ID", uuid); 
     req.onreadystatechange = function() { 
     if (req.readyState == 4) { 
     if (req.status == 200) { 
      /* poor-man JSON parser */ 
      var upload = eval(req.responseText); 

      document.getElementById('tp').innerHTML = upload.state; 

      /* change the width if the inner progress-bar */ 
      if (upload.state == 'done' || upload.state == 'uploading') { 
       bar = document.getElementById('progressbar'); 
       w = 400 * upload.received/upload.size; 
       bar.style.width = w + 'px'; 
      } 
      /* we are done, stop the interval */ 
      if (upload.state == 'done') { 
       window.clearTimeout(interval); 
      } 
     } 
     } 
    } 
    req.send(null); 
    } 

而我的HTML:

<form id="upload" enctype="multipart/form-data" 
    action="index.php?X-Progress-ID={{tracking_id}}" 
    method="post" 
    onsubmit="openProgressBar('{{tracking_id}}'); return true;"> 

    <input name="video" type="file" /> 
    <input type="submit" class="button orange medium" value="Upload" /> 

</form> 

<div> 
    <div id="progress"> 
    <div id="progressbar"></div> 
    </div> 
    <div id="tp">(progress)</div> 
</div> 

編輯:忘了提...的{{} TRACKING_ID }在php控制器中生成並用Twig打印。

回答

0

這似乎是一個老的bug在Chrome:

https://code.google.com/p/chromium/issues/detail?id=45196

同樣與Firefox issue..tested它,它工作得很好。令人遺憾的是,這個bug現在確實存在了2到3年,所以在不久的將來,修復沒有太大的希望。

瞭解它通過XMLHTTPRequest上傳文件。