Sto recuperando un'immagine da SAP B1 Service Layer. In postino, sono in grado di vederlo come image/png
, ma c'è un problema a visualizzarlo.
Qual è il modo corretto di mostrarlo <img />
?
require(fetchedImage)
- non funziona
Ho creato una funzione cloud per recuperare l'immagine e passarla al client, ma non sono sicuro di come farlo.
Avere un oggetto super strano qualcosa del genere
data:
> '�PNGörönöu001aönöu0000öu0000öu0000örIHDRöu0000öu.........
Non so come passarlo, res.send(IMAGE IN PNG)
così posso vedere ottenere un'immagine sul lato client.
base64
Conversione controllata ma non sono sicuro di come usarli.
Aggiornare
Richiesta postino: (Funziona benissimo)
OTTIENI: https://su05.consensusintl.net/b1s/v1/ItemImages ('test') / $ value
Headers : SessionId: CHIEDIMI QUANDO TI PROVI
Per qualche motivo, non possiamo recuperare l'immagine direttamente in Front-End e dobbiamo creare un middleware, quindi lo stiamo facendo Firebase Cloud Function
Quindi ecco la funzione che recupera l'immagine e non sa come passarla.
Ecco la funzione in 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 stiamo ottenendo una risposta come questa:
{status: 200,
statusText: 'OK',
intestazioni:
{ 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:
dati:
'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 <\ u0000 \ u0000 \ u0003hiTXtXML: com.adobe.xmp \ u0000 \ u0000 \ u0000 \ u0000 \ u0000
QUESTO È SUPER LUNGO E VA A 80-100 linee in più
Se vuoi testare puoi usare quanto segue:
Postino:
POST: https://us-central1-rapid-replacement.cloudfunctions.net/getImageFromItems
body: {"productId": "test"}
I prodotti validi sono: 1. "RR000102" 2. "test" 3. "RR000101"
const request = require('request')
request.get(url).pipe(res);
res.set({'Content-Type': 'image/png'});