Estou buscando uma imagem do SAP B1 Service Layer. No carteiro, posso vê-lo como image/png
, mas há um problema para exibi-lo.
Qual é a maneira correta de mostrá-lo <img />
?
require(fetchedImage)
- não funciona
Criei uma função de nuvem para buscar a imagem e transmiti-la ao cliente, mas não sei como fazê-lo.
Ter um objeto super estranho mais ou menos assim
data:
> '�PNGörönöu001aönöu0000öu0000öu0000örIHDRöu0000öu.........
Não sei como passar res.send(IMAGE IN PNG)
para que eu possa ver uma imagem no lado do cliente.
base64
Conversão marcada, mas não sei como usá-los.
Atualizar
Pedido do Carteiro: (Isso está funcionando bem)
GET: https://su05.consensusintl.net/b1s/v1/ItemImages ('test') / $ value
Cabeçalhos : SessionId: PERGUNTE-ME QUANDO TENTAR
Por alguma razão, não podemos buscar a imagem diretamente no Front-End e precisamos criar um middleware, por isso estamos fazendo isso em Firebase Cloud Function
Então, aqui está a função que busca a imagem e não sabe como transmiti-la.
Aqui está a função na 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);
E estamos recebendo uma resposta como esta:
{status: 200,
statusText: 'OK',
cabeçalhos:
{ 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' ] },
config:
{ url:
dados:
\ N \ u001a \ n \ u0000 \ u0000 \ u0000 \ rIHDR \ u0000 \ u0000 \ u0000 \ u0000 \ u0000 \ u0000 \ u0000 \ u0000 \ u0000 \ u0000 \ u0000 \ u0000 \ u0000 \ u00006 \ u001fS \ u0000 \ u0000 \ u0000 \ u0019tEXtSoftware \ u0000Adobe ImageReadyq e <\ u0000 \ u0000 \ u0003hiTXtXML: com.adobe.xmp \ u0000 \ u0000 \ u0000 \ u0000 \ u0000
ISSO É MUITO LONGO E DÁ MAIS 80-100 linhas
Se você deseja testar, pode usar o seguinte:
Carteiro:
POST: https://us-central1-rapid-replacement.cloudfunctions.net/getImageFromItems
body: {"productId": "test"}
Os productId válidos são: 1. "RR000102" 2. "test" 3. "RR000101"
const request = require('request')
request.get(url).pipe(res);
res.set({'Content-Type': 'image/png'});