Node.js 1gb csv文件上传 - 错误:请求已中止

时间:2014-03-14 08:03:21

标签: javascript node.js csv large-files

我有大文件上传的问题。我试图上传较小的文件并且它工作得很好但是当我尝试上传更大的文件(700mb及更多)时,node.js服务器给了我一个错误:

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)

它甚至没有达到阅读状态。

我用

  • Google Chrome
  • express 3.0

我已经包含了

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

我想我也应该提一下;收到上述错误后,文件再次开始上传并失败。同样,较小的文件也没有问题。所以我的问题是如何使用这种方法有效地传输大文件,或者有更好的方法来做到这一点?感谢。

2 个答案:

答案 0 :(得分: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 :(得分:2)

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