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

时间:2013-11-22 18:25:41

标签: node.js

我有以下客户服务:

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);
});

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

我该如何解决这个问题?

更新: 服务器代码有效,因为我使用Fiddler成功测试了它。

2 个答案:

答案 0 :(得分:0)

express.bodyParser()适用于multipart/form-data个编码正文。您只是将文件内容作为正文发送,因此您需要将数据传输到可写流或缓冲它。

答案 1 :(得分:0)

要正确上传文件,您需要在客户端进行更多工作:

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

(主要取自here