Estou buscando uma imagem do SAP B1 Service Layer. No carteiro, posso vê-lo como image/png
, mas há um problema para exibi-lo.
Qual é a maneira correta de mostrá-lo <img />
?
require(fetchedImage)
- não funciona
Criei uma função de nuvem para buscar a imagem e transmiti-la ao cliente, mas não sei como fazê-lo.
Ter um objeto super estranho mais ou menos assim
data:
> '�PNGörönöu001aönöu0000öu0000öu0000örIHDRöu0000öu.........
Não sei como passar res.send(IMAGE IN PNG)
para que eu possa ver uma imagem no lado do cliente.
base64
Conversão marcada, mas não sei como usá-los.
Atualizar
Pedido do Carteiro: (Isso está funcionando bem)
GET: https://su05.consensusintl.net/b1s/v1/ItemImages ('test') / $ value
Cabeçalhos : SessionId: PERGUNTE-ME QUANDO TENTAR
Por alguma razão, não podemos buscar a imagem diretamente no Front-End e precisamos criar um middleware, por isso estamos fazendo isso em Firebase Cloud Function
Então, aqui está a função que busca a imagem e não sabe como transmiti-la.
Aqui está a função na 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);
E estamos recebendo uma resposta como esta:
{status: 200,
statusText: 'OK',
cabeçalhos:
{ 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:
dados:
\ N \ u001a \ n \ u0000 \ u0000 \ u0000 \ rIHDR \ u0000 \ u0000 \ u0000 \ u0000 \ u0000 \ u0000 \ u0000 \ u0000 \ u0000 \ u0000 \ u0000 \ u0000 \ u0000 \ u00006 \ u001fS \ u0000 \ u0000 \ u0000 \ u0019tEXtSoftware \ u0000Adobe ImageReadyq e <\ u0000 \ u0000 \ u0003hiTXtXML: com.adobe.xmp \ u0000 \ u0000 \ u0000 \ u0000 \ u0000
ISSO É MUITO LONGO E DÁ MAIS 80-100 linhas
Se você deseja testar, pode usar o seguinte:
Carteiro:
POST: https://us-central1-rapid-replacement.cloudfunctions.net/getImageFromItems
body: {"productId": "test"}
Os productId válidos são: 1. "RR000102" 2. "test" 3. "RR000101"
res.set({'Content-Type': 'image/png'});
const request = require('request')
request.get(url).pipe(res);
Respostas:
Se você quiser usar imagens dinamicamente, precisará buscá-las assim que o componente estiver montado e insira-o depois. A imagem buscada deve ser salva no estado do componente e incluída a partir daí no atributo src da tag img. Supondo que você já possa buscar a imagem, o código abaixo deve funcionar.
fonte
Aqui está a solução mais próxima que eu vim. Basicamente, o que eu tentei é buscar a imagem e transformá-la em um blob no cliente para que você possa transformá-lo em um
objectURL
código. srcCódigo do servidor:
Código do cliente:
fonte
GET : https://su05.consensusintl.net/b1s/v1/ItemImages('test')/$value
, mas quando passo a mesma coisa, não está funcionando. Deixe-me saber se você tiver uma idéia melhor, desculpe se estou incomodando.Este problema foi resolvido.
Portanto, podemos ver a imagem no lado do cliente usando
fonte