2012-10-29 36 views
2

我已經將我的示例作爲基本可能。我嘗試將超過2 GB的大文件上傳到我的服務器,但我收到的錯誤信息僅在Firefox中有錯誤。在Chrome似乎工作好。它說「錯誤:連接斷開」。有人能解釋我爲什麼,我能做些什麼呢?上傳HUGE文件> 2GB到nodejs(n Firefox)

var http  = require("http"); 
var url  = require("url"); 

http.createServer(function (request, response) { 
    switch(url.parse(request.url).pathname) { 
     case "/": 
      displayForm(request, response); 
      break; 
     case "/upload": 
      response.writeHeader(200, {"Content-Type":"text/html"}); 
      response.end(
       '<h1>File Uploaded!</h1>' 
      ); 
      break; 
    } 
}).listen(1234); 

var displayForm = function(request, response) { 
    response.writeHeader(200, {"Content-Type":"text/html"}); 
    response.end(
     '<form action="/upload" method="post" enctype="multipart/form-data">' + 
      '<input type="file" name="uploadFile">' + 
      '<input type="submit" value="Upload!">' + 
     '</form>' 
    ); 
}; 

編輯:我只是意識到它只會發生在火狐,無法在Chrome!

回答

2

對於這樣大的文件,我建議你用FileReader閱讀您的文件,這一塊小碎片二進制與BlobBlobbuilder和傳輸(通過Socket.io)用進度條塊的文件塊,串聯上的塊服務器。當最後一個塊被髮送時 - 你在後端得到了完整的文件。

您還可以在Cookie/LocalStorage中保存當前塊號以防連接中斷以繼續傳輸。

P.S.對於古老的IE和其他狗屎,有使用Blob的Flash插件,谷歌它。

P.S.S最大文件大小由不同的瀏覽器POST請求:http://motobit.com/help/scptutl/pa98.htm

+0

在我的示例,你看,我不是連閱讀它們。它與傳輸的問題 –

+0

我在本地Mac上試過你的代碼,它沒有錯誤地工作,但花了大約3-5分鐘才完成。 –

+0

如果你在打開瀏覽器的同一臺機器上運行服務器,是的,因爲沒有實際的http。它的所有操作都在硬盤中進行。嘗試從另一臺計算機訪問網頁。 –

相關問題