Ich rufe ein Bild von SAP B1 Service Layer ab. Beim Postboten kann ich es als image/png
anzeigen, aber es gibt ein Problem beim Anzeigen.
Was ist der richtige Weg, um es zu zeigen <img />
?
require(fetchedImage)
- funktioniert nicht
Ich habe eine Cloud-Funktion erstellt, um das Bild abzurufen und an den Client weiterzuleiten, bin mir jedoch nicht sicher, wie ich es tun soll.
Ein super komisches Objekt wie dieses zu haben
data:
> '�PNGörönöu001aönöu0000öu0000öu0000örIHDRöu0000öu.........
Ich weiß nicht, wie res.send(IMAGE IN PNG)
ich es weitergeben soll, damit ich sehe, dass ich auf der Clientseite ein Bild bekomme.
Überprüfte base64
Konvertierung, aber ich bin nicht sicher, wie ich sie verwenden soll.
Aktualisieren
Postbotenanfrage: (Dies funktioniert gut)
GET: https://su05.consensusintl.net/b1s/v1/ItemImages ('test') / $ value
Header : SessionId: FRAGEN SIE MICH, WENN SIE VERSUCHEN
Aus irgendeinem Grund können wir das Image nicht direkt im Front-End abrufen und müssen eine Middleware erstellen, damit wir es ausführen können Firebase Cloud Function
Hier ist also die Funktion, die das Bild abruft und nicht weiß, wie es übergeben werden soll.
Hier ist die Funktion in der Firebase Cloud-Funktion:
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);
Und wir bekommen eine Antwort wie diese:
{Status: 200,
statusText: 'OK',
Überschriften:
{ 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:
Daten:
' 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
Dies ist super lang und geht für 80-100 weitere Zeilen
Wenn Sie testen möchten, können Sie Folgendes verwenden:
Briefträger:
POST: https://us-central1-rapid-replacement.cloudfunctions.net/getImageFromItems
body: {"productId": "test"}
Gültige Produkt-IDs sind: 1. "RR000102" 2. "Test" 3. "RR000101"
const request = require('request')
und in der Route vertretenrequest.get(url).pipe(res);
res.set({'Content-Type': 'image/png'});