2014-12-27 62 views
0

我(作为客户端)试图使用restify发布图像,并且服务器只需要保存它。将readstream管道写入写入流不起作用

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

不工作。一个空文件被创建,但仅此而已。它适用于将req.body复制到缓冲区,然后fs.writeFile(...)。我也试过req.body.pipe,但是这会引发错误。

+0

只是想知道,这是为网格? 另外,你是否正在监听writeStream上的[finish](http://nodejs.org/docs/v0.10.36/api/stream.html#stream_event_finish)事件?在发送响应之前,您必须确保所有数据都通过流。 – MForMarlon 2015-03-04 18:08:10

回答

0

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

1

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

但是,这只会在请求包含只有的图像数据。通常情况下,如果请求至少包含一个文件,则格式为multipart/form-data,因此您不能只管理请求并仅期待图像数据。