node.js - 无法通过特快路线发送 PNG
问题描述
我有一个从我的快递端点提供的 png 图像,该图像应该作为图像源可读。我目前已将图像作为节点中的缓冲区,我正在尝试渲染它,但是我似乎无法让图像出现。
结果
预期的
快递JS代码
publicController.get('/avatar', async (req, res, next) => {
const image = await PUBLIC.avatar();
res.writeHead(200, {
'Content-Type': 'image/png',
'Content-Length': image.toString("binary").length
});
res.charset = 'binary';
res.write(image.toString("binary"));
res.end()
})
试过的方法:
- 从可读流管道
- 转换为 base 64 并渲染
- 转换为二进制和管道
- 转换为二进制并渲染
- 转储原始 png 文件
注意事项:
- 我已经检查并且 PNG 文件是正确的,我从缓冲区创建了一个文件,并且 PNG 呈现完美。
- png 图像是动态的,取决于几个因素,因此为什么我不能放在像 s3 这样的对象存储中。
解决方案
res.write(image.toString("binary"));
这不合适。如果您已经有缓冲区,请不要转换它。马上写出来。
res.writeHead(200, {
'Content-Type': 'image/png',
'Content-Length': image.length;
});
res.end(image);
推荐阅读
- angular - 急切加载 Grand Child Components Angular 10 的正确路由配置?
- lua - 如何确保更换?
- postgresql - 传入连接需要 application_name
- azure - Azure - 为 Azure API 管理配置灾难恢复和自动故障转移?
- wordpress - 通知作者发布状态更改
- javascript - 产生不停止 ember 并发任务中的流程
- jquery - 使用 jquery 验证禁用按钮
- html - 如何在 SVG 的矩形内设置标题标签的样式?
- javascript - 如何在节点 js 中从与 localhost:8080/?data=test 相邻的 URL 读取数据
- nginx - 如何通过 nginx 使根目录子文件夹可用?