Я отримую зображення з сервісного шару 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 ('тест') / значення $
Заголовки : SessionId: ЗАПИТЬ МЕНЕ, КОЛИ ВИ СПУСТИТИ
Чомусь ми не можемо отримати зображення безпосередньо в Front-End і нам потрібно створити проміжне програмне забезпечення, щоб ми це зробили 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,
statusText: "ОК",
заголовки:
{ 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:
дані:
' 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
ЦЕ СУПЕР ДЛЯГО І ПОДАЄ на 80-100 більше рядків
Якщо ви хочете протестувати, ви можете скористатися наступним:
Листоноша:
POST: https://us-central1-rapid-replacement.cloudfunctions.net/getImageFromItems
body: {"productId": "тест"}
Дійсний продуктId: 1. "RR000102" 2. "тест" 3. "RR000101"
const request = require('request')
і в маршрутіrequest.get(url).pipe(res);
res.set({'Content-Type': 'image/png'});