Saya mengambil gambar dari SAP B1 Service Layer. Di tukang pos, saya dapat melihatnya sebagai image/png
, tetapi ada masalah menampilkannya.
Apa cara yang benar untuk menunjukkannya <img />
?
require(fetchedImage)
- tidak bekerja
Saya telah membuat Fungsi Cloud untuk mengambil gambar dan meneruskannya ke klien, tetapi saya tidak yakin bagaimana melakukannya.
Memiliki benda super aneh seperti ini
data:
> '�PNGörönöu001aönöu0000öu0000öu0000örIHDRöu0000öu.........
Tidak tahu cara mengirimkannya res.send(IMAGE IN PNG)
sehingga saya bisa melihat mendapatkan gambar di sisi klien.
Memeriksa base64
konversi tetapi saya tidak yakin bagaimana menggunakannya.
Memperbarui
Permintaan tukang pos: (Ini berfungsi dengan baik)
DAPATKAN: https://su05.consensusintl.net/b1s/v1/ItemImages ('test') / $ value
Header : SessionId: MEMINTA SAYA KETIKA ANDA MENCOBA
Untuk beberapa alasan, kami tidak dapat mengambil Gambar langsung di Front-End dan perlu membuat middleware sehingga kami melakukannya di Firebase Cloud Function
Jadi di sini adalah fungsi yang mengambil gambar dan tidak tahu cara melewatinya.
Inilah fungsi di 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);
Dan kami mendapat respons seperti ini:
{status: 200,
statusText: 'OK',
tajuk:
{ 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' ] },
konfigurasi:
{ url:
data:
' PNG \ r \ n \ u001a \ n \ u0000 \ u0000 \ u0000 \ rIHDR \ u0000 \ u0000 \ u0000 \ u0000 \ u0000 \ u0000 \ b \ u0002 \ u0000 \ u0000 \ u0000 \ u0000 \ u0000 \ u0000 \ u0000 \ u0000 \ u0019tEXtSoftware \ u0000Adobe ImageReadyq e <\ u0000 \ u0000 \ u0003hiTXtXML: com.adobe.xmp \ u0000 \ u0000 \ u0000 \ u0000
INI SUPER PANJANG DAN PERGI UNTUK 80-100 baris lagi
Jika Anda ingin menguji, Anda dapat menggunakan yang berikut ini:
Tukang pos:
POST: https://us-central1-rapid-replacement.cloudfunctions.net/getImageFromItems
tubuh: {"productId": "test"}
ProductId yang valid adalah: 1. "RR000102" 2. "test" 3. "RR000101"
res.set({'Content-Type': 'image/png'});
const request = require('request')
dan dalam ruterequest.get(url).pipe(res);
Jawaban:
Jika Anda ingin menggunakan gambar secara dinamis, Anda harus mengambil gambar segera setelah komponen dipasang dan masukkan setelahnya. Gambar yang diambil kemudian harus disimpan dalam keadaan komponen dan dimasukkan dari sana dalam attrbut src dari tag img. Dengan asumsi Anda sudah dapat mengambil gambar, kode di bawah ini akan berfungsi.
sumber
Inilah solusi terdekat yang bisa saya gunakan. Pada dasarnya yang saya coba adalah untuk mengambil gambar dan kemudian mengubahnya menjadi gumpalan pada klien sehingga Anda dapat membuatnya menjadi.
objectURL
Kode diperbarui mengalirkan gambar sebagai buffer dan mengkonsumsinya pada klien kemudian mengubahnya menjadi objectURL dan menetapkan ke gambar srcKode server:
Kode klien:
sumber
GET : https://su05.consensusintl.net/b1s/v1/ItemImages('test')/$value
, tetapi ketika saya melewati hal yang sama, itu tidak berfungsi. Beri tahu saya jika Anda mendapatkan ide yang lebih baik, maaf jika saya mengganggu Anda.Masalah ini telah diatasi.
Jadi kami dapat melihat gambar di sisi klien menggunakan
sumber