将文件从一个节点服务发布到节点web服务

我有以下客户服务:

var request = require('request'); var fs = require('fs'); var file = "c:\\log.txt"; var url = "http://localhost:8080/upload"; fs.createReadStream(file).pipe(request.post(url)); 

这是服务器上的代码:

 var express = require('express'); var app = express(); app.use(express.bodyParser()); var fs = require('fs'); var sys = require('sys'); app.listen(8080); app.post('/upload', function (req, res) { console.log(req.files); }); 

我想最终保存在服务器上收到的文件。 现在,当我运行服务,然后客户端,服务器logging一个空的数组 – 而不是上传的文件。

我如何解决这个问题?

更新:服务器代码工作,因为我成功地使用Fiddlertesting它。

为了正确的file upload,你需要在你的客户端做更多的工作:

 var r = request.post(url); var form = r.form(); form.append('my_file', fs.createReadStream(file)); 

(大部分来自这里 )

express.bodyParser()适用于multipart/form-data编码的机构。 您只是将文件内容作为一个主体发送,因此您需要将数据传输到可写入的stream或缓冲区。