为什么我的数据被大文件截断?

时间:2014-05-26 21:13:46

标签: node.js express meteor connect iron-router

我正在向一个Meteor后端写一个PUT数据的cli,后者又使用快速连接中间件。任何大文件(超过700K)都不会完成上传,_req.on("end"事件永远不会触发。

较小的文件(700K以下)工作正常,_req.on("end"事件总是会触发。

这是cli客户端:

fs.readFile(file, function(err, data) {
    var req = http.request({
        method: 'PUT',
        host: 'localhost',
        path: '/api/deploy',
        port: '3000',
        timeout: 60 * 60 * 1000, // 1 hour
        headers : {
            "Content-Length" : data.length
        }
     },
     function(response) {
         console.log("done");
      }
    );
    req.write(data);
    req.end();
});

以下是相关的服务器代码:

this.route("deploy", {
    where: "server"
    , path: "/api/deploy"
    , action: function() {
        var _self = this;
        var _req = _self.request;
        var _total = _self.request.headers["content-length"];
        var _write = fs.createWriteStream("/tmp/test.tar");
        _req.pipe(_write);

        var _consumed = 0;

        _req.on("data", function(chunk) {
            _consumed += chunk.length;
                var uploadProgress = (_consumed/_total) * 100;
            console.log(uploadProgress);
        });

        _req.on("end", function() {
            console.log("ALL DONE");
        });
    }
});

我已经尝试调整bodyParser和其他地方的connect upload参数。如果默认限制是100mb,那么我认为这不是问题。

任何帮助都会很棒。我是OSX Mavericks的。在某处设置了硬限制,我只是不知道它是什么,也不知道如何规避它。

0 个答案:

没有答案