正如 3on 指出的那样,POST 请求的正确语法是
request({ method:"post", url: "server.com", body:"Hello World"}, callback);
您还有一个方便的方法:
request.post({ url: "server.com", body:"Hello World"}, callback);
但是从您的问题来看,您似乎想要流式传输:
var request = require('request');
var fs = require('fs');
var stream = fs.createWriteStream('file');
stream.write('Hello');
stream.write('World');
fs.createReadStream('file').pipe(request.post('http://server.com'));
更新:
- 您可以以任何您喜欢的方式破坏您写入流的块,只要您有 RAM(4mb 是花生,但请记住 v8(节点后面的 javascript 引擎)的分配限制为 1.4GB 我认为) ;
- 正如您在上面的代码中看到的那样,您可能会看到您在管道
stream.bytesWritten
中“写入”了多少内容。var stream = fs.createWriteStream('file')
我认为您无法知道管道的另一端有多少,但bitesWritten 应该给您一个相当不错的近似值。
- 您可以同时收听
data
和end
stream
request.post('http://server.com')