我(作为客户端)正在尝试使用 restify 发布图像,服务器只需要保存它。
req.pipe(fs.createWriteStream('test.jpg'));
不工作。将创建一个空文件,但仅此而已。当我将req.body
复制到缓冲区然后fs.writeFile(...)
时,它有效。我也尝试过req.body.pipe
,但这会引发错误。
您可能正在使用一个正文解析器中间件,该中间件已经从请求中读取了所有数据,因此没有剩余的内容要读取。如果要直接从请求对象读取,请尝试调整路由处理程序和/或正文解析中间件的位置。
但是,仅当请求仅包含图像数据时,这才有效。通常,如果请求包含至少一个文件,则请求的格式为 multipart/form-data
,因此您不能只通过管道传输请求并仅期望图像数据。
因此,中间件链中的其他内容(可能是restify.bodyParser()
)已经将请求正文流式传输到缓冲区或字符串中,req.body
并且您不能流式传输两次。找到中间件并为此路由禁用它,如果您想自己处理直接流到文件系统。