node.js - Node 请求(读取图像流 - 管道返回响应)

标签 node.js stream pipe

对你们中的一些人来说可能是个简单的问题。我有一个 API 端点,它返回一个 http 响应,其中 Content-Type 设置为图像类型 - image/jpeg、image/png 等,如果没有我发送的 ID 的人的图像,则返回 404。

如果是 404,我只想发送位于文件系统中的无文件 png。我一直在尝试使用请求和管道,但没有找到类似的例子。人们总是从文件流式传输。

它应该自己工作吗:

app.get('/api/customers/:id/image', function (req, res) {
    request.get(util.format(config.apis.getImage, req.params.id)).pipe(res);
    //res.sendfile(path.join(__dirname, '/static/img/user.png'));
});

它确实将图像返回给浏览器但抛出异常:

stream.js:94
throw er;  // Unhandled stream error in pipe.
Error: Parse Error
at Socket.socketOnData(http.js:1556:20)
...

无论哪种方式,我都想检查请求调用的响应,以防出现 404 情况。

我想我对流还是太陌生了。

有什么帮助吗?

谢谢!

最佳答案

先做一个request.head怎么样? (小开销)。

如果 404 没有发送文件 png 否则做 request.get ...

关于node.js - Node 请求(读取图像流 - 管道返回响应),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17004990/

相关文章:

node.js - 在除 server/app.js 之外的路由中使用 socket.io

c# - 为什么 Stream.ReadByte 返回 int?

c# - 是否可以将 .net Stream 包装为 STL std::ostream*?

javascript - 方法名不是函数

node.js - 单进程还是多进程?

node.js - FFMPEG 挂掉整个nodejs进程

Linux 为什么我不能通过管道找到结果到 rm?

sed - 如何让 sed 从管道中获取输入,并插入到文件中

javascript - Mongoose Model.remove 回调没有给我删除的项目数?

c++ - 我的文件里什么都没写