【发布时间】:2015-01-07 05:26:49
【问题描述】:
我正在尝试通过发布请求将 .zip 文件 (~180KB) 作为八位字节流上传。 以下代码按预期执行 2-3 次。文件被上传,我得到了预期的响应。
但是,在第 3 次/第 4 次发布数据时,请求不会在上传服务器上显示一分钟左右。当我等待一段时间后,我可以正常执行另外 2-3 个请求,然后再次延迟。
两台服务器都在 localhost (OS X) 上运行 node (v0.10.31) + express。
var options = {
host : interface.host,
port : interface.port,
path : interface.path + '/deployResources',
method : 'POST',
headers : {
'Content-Type': 'application/octet-stream',
'Content-Length': byteLength,
'Content-disposition': 'attachment; filename=resources.zip'
}
};
var stream = fs.createReadStream(zipPath);
var req = http.request(options, function (res) {
// Response delayed on 3rd/4th run
console.log(res.statusCode);
});
stream.on('data', function (data) {
req.write(data);
});
stream.on('end', function () {
console.log('STREAM END');
stream.close();
req.end();
});
来自节点 v0.10.32 更新日志:
http:不要在 TE HEAD 响应中发送 0\r\n\r\n (Fedor Indutny)
这可能是个问题吗?
谢谢。
【问题讨论】:
-
在您的
options对象中设置agent: false会影响任何事情吗? -
在不相关的说明中,您可以通过删除
stream事件处理程序并只执行stream.pipe(req);来简化您的请求代码 -
将代理设置为 false 解决了我的问题。请问你能写一个答案吗?谢谢。
标签: node.js http post file-upload stream