将读取流管理到写入流中不起作用

时间:2014-12-27 20:39:09

标签: node.js stream restify

我(作为客户端)我试图发布一个restify图像,服务器只需要保存它。

req.pipe(fs.createWriteStream('test.jpg'));

无效。创建一个空文件但仅此而已。当我将req.body复制到缓冲区然后fs.writeFile(...)时,它会起作用。我也尝试了req.body.pipe,但这会引发错误。

2 个答案:

答案 0 :(得分:1)

您可能正在使用已经从请求中读取所有数据的正文解析器中间件,因此没有任何内容可供阅读。如果要直接从请求对象中读取,请尝试调整路由处理程序和/或正文解析中间件的位置。

但是,只有在请求仅包含 图像数据时才会有效。通常情况下,如果请求包含至少一个文件,请将其格式化为multipart/form-data,这样您就不能只管理请求并仅预期图像数据。

答案 1 :(得分:0)

因此,中间件链中的其他内容(可能是restify.bodyParser())已经将请求正文流式传输到缓冲区或字符串req.body,并且您无法将内容流式传输两次。如果您想直接处理流式传输到文件系统,请找到中间件并为此路由禁用它。