将读取流管道传输到写入流不起作用



我(作为客户端)正在尝试使用 restify 发布图像,服务器只需要保存它。

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

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

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

但是,仅当请求包含图像数据时,这才有效。通常,如果请求包含至少一个文件,则请求的格式为 multipart/form-data,因此您不能只通过管道传输请求并仅期望图像数据。

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

相关内容

  • 没有找到相关文章

最新更新