Je récupère une image de SAP B1 Service Layer. Dans Postman, je peux le voir comme image/png
, mais il y a un problème d'affichage.
Quelle est la bonne façon de l'afficher <img />
?
require(fetchedImage)
- ne fonctionne pas
J'ai créé une fonction cloud pour récupérer l'image et la transmettre au client, mais je ne sais pas comment le faire.
Avoir un objet super bizarre quelque chose comme ça
data:
> '�PNGörönöu001aönöu0000öu0000öu0000örIHDRöu0000öu.........
Je ne sais pas comment le passer res.send(IMAGE IN PNG)
pour que je puisse voir obtenir une image côté client.
base64
Conversion vérifiée mais je ne sais pas comment les utiliser.
Mise à jour
Postman Request: (Cela fonctionne bien)
OBTENIR: https://su05.consensusintl.net/b1s/v1/ItemImages ('test') / $ value
En-têtes : SessionId: DEMANDEZ-MOI LORSQUE VOUS ESSAYEZ
Pour une raison quelconque, nous ne pouvons pas récupérer l'image directement dans Front-End et devons créer un middleware, nous le faisons donc dans Firebase Cloud Function
Voici donc la fonction qui récupère l'image et ne sait pas comment la passer.
Voici la fonction dans 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);
Et nous obtenons une réponse comme celle-ci:
{statut: 200,
statusText: 'OK',
en-têtes:
{ 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:
Les données:
' 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
C'EST SUPER LONG ET VA POUR 80-100 lignes supplémentaires
Si vous souhaitez tester, vous pouvez utiliser les éléments suivants:
Facteur:
POST: https://us-central1-rapid-replacement.cloudfunctions.net/getImageFromItems
body: {"productId": "test"}
ProductId valide sont: 1. "RR000102" 2. "test" 3. "RR000101"
const request = require('request')
et dans l'itinérairerequest.get(url).pipe(res);
res.set({'Content-Type': 'image/png'});