ฉันดึงภาพจาก SAP B1 Service Layer ในบุรุษไปรษณีย์ฉันสามารถดูได้image/png
แต่มีปัญหาในการแสดง
วิธีที่ถูกต้องในการแสดงมัน<img />
คืออะไร?
require(fetchedImage)
- ไม่ทำงาน
ฉันได้สร้างฟังก์ชั่นคลาวด์เพื่อดึงภาพและส่งต่อไปยังลูกค้า แต่ฉันไม่แน่ใจว่าจะทำอย่างไร
มีวัตถุประหลาดสุด ๆ แบบนี้
data:
> '�PNGörönöu001aönöu0000öu0000öu0000örIHDRöu0000öu.........
ไม่ทราบวิธีส่งผ่านres.send(IMAGE IN PNG)
เพื่อให้ฉันเห็นภาพบนฝั่งไคลเอ็นต์
ตรวจสอบbase64
การแปลง แต่ฉันไม่แน่ใจว่าจะใช้มันอย่างไร
ปรับปรุง
คำขอบุรุษไปรษณีย์: (ทำงานได้ดี)
รับ: 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' ] },
การตั้งค่า:
{ url:
ข้อมูล:
'PNG \ r \ n \ u001a \ n \ u0000 \ u0000 \ u0000 \ rIHDR \ u0000 \ u0000 \ u0000 \ u0000 \ u0000 \ u0000 \ ข \ u0002 \ u0000 \ u0000 \ u0000 \ u0006 \ u001fS \ u0000 \ u0000 \ u0000 \ u0019tEXtSoftware \ u0000Adobe ImageReadyq e <\ u0000 \ u0000 \ u0003hiTXtXML: com.adobe.xmp \ u0000 \ u0000 \ u0000 \ u0000 \ u0000 \ u0000
นี่ยาวมากและใช้เวลามากกว่า 80-100 บรรทัด
หากคุณต้องการทดสอบคุณสามารถใช้สิ่งต่อไปนี้:
บุรุษไปรษณีย์:
POST: https://us-central1-rapid-replacement.cloudfunctions.net/getImageFromItems
เนื้อหา: {"productId": "test"}
รหัสผลิตภัณฑ์ที่ถูกต้องคือ: 1. "RR000102" 2. "ทดสอบ" 3. "RR000101"
const request = require('request')
และในเส้นทางrequest.get(url).pipe(res);
res.set({'Content-Type': 'image/png'});