2014-03-14 38 views
4

我有一個大文件上傳的問題。我曾嘗試上傳較小的文件,它的工作很好,但是當我嘗試上傳更大的文件(700MB以上)Node.js的服務器是給我的錯誤:Node.js 1gb csv文件上傳 - 錯誤:請求中止

Error: Request aborted at IncomingMessage.onReqAborted (/home/xxx/node_modules/express/node_modules/connect/node_modules/multiparty/index.js:131:17) 
    at IncomingMessage.EventEmitter.emit (events.js:92:17) 
    at abortIncoming (http.js:1911:11) 
    at Socket.serverSocketCloseListener (http.js:1923:5) 
    at Socket.EventEmitter.emit (events.js:117:20) 
    at TCP.close (net.js:465:12) 

它甚至沒有達到閱讀狀態。

我用

  • 谷歌chrome
  • 表達3.0

我已經包括

app.use(express.bodyParser({limit: '2048mb'})); 

此外,我想我應該提到這一點;得到上述錯誤後,文件開始再次上傳並失敗。再次,小文件沒有問題。所以我的問題是我如何能夠有效地使用此方法流式傳輸大文件,還是有更好的方法來做到這一點?謝謝。

+3

你需要使用強大的,只是谷歌節點厲害。不要使用bodyParser,它已被棄用。 – wayne

+0

因爲通常可以壓縮CSV文件,所以在發送CSV文件之前先讓瀏覽器壓縮CSV文件是有好處的http://gildas-lormeau.github.io/zip.js/有些人也使用Flash創建文件上傳者壓縮文件http://stackoverflow.com/questions/8377268/file-compression-before-upload-on-the-client-side –

回答

2

什麼下面的代碼:

var formidable = require('formidable'), 
    http = require('http'), 
    util = require('util'); 

http.createServer(function(req, res) { 
    if (req.url == '/upload' && req.method.toLowerCase() == 'post') { 
    // parse a file upload 
    var form = new formidable.IncomingForm(); 

    form.parse(req, function(err, fields, files) { 
     res.writeHead(200, {'content-type': 'text/plain'}); 
     res.write('Received upload:\n\n'); 
     res.end(util.inspect(files)); 
    }); 

    return; 
    } 

    // show a file upload form 
    res.writeHead(200, {'content-type': 'text/html'}); 
    res.end(
    '<form action="/upload" enctype="multipart/form-data" method="post">'+ 
    '<input type="file" name="upload" multiple="multiple"><br>'+ 
    '<input type="submit" value="Upload">'+ 
    '</form>' 
); 
}).listen(80); 

來源:felixge/node-formidable

1

在客戶端,你需要提及enctype="multipart/form-data"

相關問題