我(作为客户端)试图使用restify发布图像,并且服务器只需要保存它。将readstream管道写入写入流不起作用
req.pipe(fs.createWriteStream('test.jpg'));
不工作。一个空文件被创建,但仅此而已。它适用于将req.body
复制到缓冲区,然后fs.writeFile(...)
。我也试过req.body.pipe
,但是这会引发错误。
我(作为客户端)试图使用restify发布图像,并且服务器只需要保存它。将readstream管道写入写入流不起作用
req.pipe(fs.createWriteStream('test.jpg'));
不工作。一个空文件被创建,但仅此而已。它适用于将req.body
复制到缓冲区,然后fs.writeFile(...)
。我也试过req.body.pipe
,但是这会引发错误。
因此,您的中间件链中的其他内容(可能为restify.bodyParser()
)已将请求正文以req.body
的形式传输到缓冲区或字符串中,并且您无法两次传送某些内容。如果你想直接处理文件系统的流媒体,找到中间件并禁用它。
您可能正在使用一个正在读取请求中所有数据的正文解析器中间件,因此没有剩下可读的内容。如果要直接从请求对象读取,请尝试调整路由处理程序和/或主体解析中间件的位置。
但是,这只会在请求包含只有的图像数据。通常情况下,如果请求至少包含一个文件,则格式为multipart/form-data
,因此您不能只管理请求并仅期待图像数据。
只是想知道,这是为网格? 另外,你是否正在监听writeStream上的[finish](http://nodejs.org/docs/v0.10.36/api/stream.html#stream_event_finish)事件?在发送响应之前,您必须确保所有数据都通过流。 – MForMarlon 2015-03-04 18:08:10