将文件从一个节点服务发布到节点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或缓冲区。