【发布时间】:2020-01-17 21:14:08
【问题描述】:
我正在从 SAP B1 服务层获取图像。
在邮递员中,我可以将其视为image/png,但显示它时出现问题。
在<img /> 中显示它的正确方法是什么?
require(fetchedImage) - 不起作用
我创建了一个云函数来获取图像并将其传递给客户端,但我不知道该怎么做。
有一个像这样的超级奇怪的物体
data:
> '�PNGörönöu001aönöu0000öu0000öu0000örIHDRöu0000öu.........
不知道如何通过res.send(IMAGE IN PNG) 传递它,所以我可以看到在客户端获取图像。
检查了base64 转换,但我不确定如何使用它们。
更新
邮递员请求:(这工作正常)
GET : https://su05.consensusintl.net/b1s/v1/ItemImages('test')/$value
标题:SessionId:尝试时问我
由于某种原因,我们无法直接在前端获取图像,需要创建一个中间件,所以我们在 Firebase Cloud Function 中进行操作
所以这里是获取图像但不知道如何传递它的函数。
这是 Firebase Cloud Function 中的函数:
if (!req.body.productId) {
res.status(400).send({ error: "productId is required" });
return;
}
console.log("Starting the process");
const productId = req.body.productId;
const login = await Auth.login();
const fetchedImg = await ItemMaster.getImage(login["SessionId"], productId);
//Here in the fetchedImg, we're getting some data like
res
.status(200)
.set("Content-Type", "image/png")
.send(fetchedImg);
我们收到这样的回复:
{状态:200,
状态文本:'OK',
标题:
{ server: 'nginx', date: 'Wed, 22 Jan 2020 03:52:22 GMT', 'content-type': 'image/png', 'transfer-encoding': 'chunked', connection: 'close', dataserviceversion: '3.0', 'content-disposition': 'inline; filename="rr-96600.png"', vary: 'Accept-Encoding', 'set-cookie': [ 'ROUTEID=.node2; path=/b1s' ] },配置:
{ url:数据:
'�PNG\r\n\u001a\n\u0000\u0000\u0000\rIHDR\u0000\u0000\u0000\u0000\u0000\u0000...\b\u0002\u0000\u0000\u0000\u0006\u001fS �\u0000\u0000\u0000\u0019tEXtSoftware\u0000Adobe ImageReadyq�e
这是超长的,还要多写 80-100 行
如果你想测试你可以使用以下:
邮递员:
发帖:https://us-central1-rapid-replacement.cloudfunctions.net/getImageFromItems
正文:{"productId":"test"}
有效的productId是:1.“RR000102”2.“test”3.“RR000101”
【问题讨论】:
-
你有没有在后台设置内容类型
res.set({'Content-Type': 'image/png'}); -
是的,我也试过了,它的图像损坏了。
-
你把它们保存在某个地方吗?
-
不,我不是,没有那个有没有办法完成它?
-
您可以直接代理它
const request = require('request')和路由request.get(url).pipe(res);
标签: javascript node.js sapb1