从Angular 4/5 +中的API获取图像?

问题描述 投票:50回答:3

我刚开发Angular4。在从API获得有关显示图像的响应时遇到了问题。在API中,图像文件具有输入流文件,我不知道如何检索和正确显示它。] >

任何人都可以解决吗?

我尝试过:

  • Image.Component.ts:

    this.http.get('http://localhost:8080/xxx/download/file/596fba76ed18aa54e4f80769')
             .subscribe((response) => { var blob = new Blob([response.text()], {type: "image/png"});
               console.log(blob);
               console.log(window.btoa(blob.toString()));           
    });
    
  • 此结果=> W29iamVjdCBCbG9iXQ==,但格式不正确

并且还尝试了此:

this.http.get('http://localhost:8080/xxx/download/file/596fba76ed18aa54e4f80769').map(Image=>Image.text())
  .subscribe(data => {
    console.log((data.toString()));   
});

这样的结果=>

 ����\ExifII*��7                                                      ��DuckyK��fhttp://ns.adobe.com/xap/1.0/<?xpacket begin="" id="W5M0MpCehiHzreSzNTczkc9d"?> <x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 5.3-c011 66.145661, 2012/02/06-14:56:27        "> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> <rdf:Description rdf:about="" xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/" xmlns:stRef="http://ns.adobe.com/xap/1.0/sType/ResourceRef#" xmlns:xmp="http://ns.adobe.com/xap/1.0/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmpMM:OriginalDocumentID="xmp.did:0280117407206811A2188F30B3BD015B" xmpMM:DocumentID="xmp.did:E2C71E85399511E7A5719C5BBD3DDB73" xmpMM:InstanceID="xmp.iid:E2C71E84399511E7A5719C5BBD3DDB73" xmp:CreatorTool="Adobe Photoshop CC 2014 (Windows)"> <xmpMM:DerivedFrom stRef:instanceID="xmp.iid:7092a9cd-b3fd-bb49-b53c-9b6e1aa1ac93" stRef:documentID="adobe:docid:photoshop:40615934-3680-11e7-911d-f07c687d49b8"/> <dc:rights> <rdf:Alt> <rdf:li xml:lang="x-default">                                                      </rdf:li> </rdf:Alt> </dc:rights> <dc:creator> <rdf:Seq/> </dc:creator> </rdf:Description> </rdf:RDF> </x:xmpmeta> <?xpacket end="r"?>���Photoshop 3.08BIMJZ%Gt6                                                      8BIM%�<".}��νz��܌��Adobed����  

但是我曾经使用window.btoa进行编码,它应该像不是拉丁范围一样出错

我刚开发Angular4。在从API获得有关显示图像的响应时遇到了问题。在API中,图像文件具有输入流文件,我不知道如何检索和显示它...

angular typescript angular2-services
3个回答
143
投票

您应该在GET-Request设置中设置responseType: ResponseContentType.Blob,因为这样您就可以将图像获取为Blob,并稍后将其转换为base64编码的源。您上面的代码不好。如果您想正确执行此操作,请创建单独的服务以从API获取图像。因为在组件中调用HTTP请求不是很好。


12
投票

角度5:


0
投票

不需要使用Angular http,您可以使用js本机函数获得

© www.soinside.com 2019 - 2024. All rights reserved.