我正在向一个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的。在某处设置了硬限制,我只是不知道它是什么,也不知道如何规避它。