从base64数据

时间:2016-08-08 20:28:25

标签: angularjs base64 png

我们正在打印由第三方创建的标签。我们直接为他们提供服务,将base64数据传递到一个空白窗口,这样用户就可以自己打印。

无论我尝试多少种方式,我都无法让图像本身显示出来。

这里是从服务器返回的数据的摘录(在任何其他显示中,它充满了�字符):

PNG


IHDR,Â_gbásRGB®ÎégAMA±üa    pHYs88?'õÿ¥IDATx^ì½ ÅöÏî÷íþ÷Û½×T$$1`ÎY130b@ ÂQ@%T8äs<d1¢sÆ|õÞëÝ÷_ÏÛSÓÍP}fúLO'ßßÝg'õtWÕTc=ç­·ª   3*Ub%$×MôqÝn!þîmâü«$ÓÍí$×MôqÝn!þîmâü«$ÓÍí$×MôqÝn!þîmâü«$ÓÍí$×MôqÝn!þîmâü«$ÓÍí$×MôqÝn!þîmâü«$ÓÍí$×MôqÝn!þîmâü«$ÓÍí$×MôqÝn!þîmâü«$ÓÍí$×MôqÝn!þîmâü«$ÓÍí$×MôqÝn!þîmâü«$ÓÍí$×MôqÝn!þîmâü«$ÓÍí$×MôqÝn!þîmâü«$ÓÍí$×MôqÝn!þîmâü«$ÓÍí$×MôqÝn!þîmâü«$ÓÍí$×MôqÝn!þîmâü«$ÓÍí$×MôqÝn!þîmâü«$ÓÍí$×MôqÝn!þîmâü«$ÓÍí$×MôqÝn!þîmâü«$ÓÍí$×MôqÝn!þîmâü«$ÓÍí$×MôqÝn!þîmâü«$ÓÍí$×MôqÝn!þîmâü«$ÓÍí$×MôqÝn!þîmâü«$ÓÍí$×MôqÝn!þîmü 4¥B!ÿ*  ü¼¹£Fë&@ú¸n7    L÷¶I~P©R1«PÈ¿Jà?oî¨äº   >n£ÛÂM ÄÓ½mWb
ùWI<àçÍ5\7AÒÇmt[¸Iøcº·MòBIYêIÀÈ¿JàÜÜq!Éu }ÜF·A?¦{Û$/U*¢JÅ¥¤þ¯ 9+È¿JàÜÜq!Éu }ÜF·A?¦{Û$O¨ÿ+¢bþn1D]
xÁº¹cBë&@ú¸n7   L÷¶I!bÎ[)FÔ¥¨s)Ô1ùWI<ßÍm\7AÒÇmt[¸Iøcº·Mª(ð&0(±BX%*bÙSÆüDþUä{sG$×MôqÝn!þîm¼ M
¢)ªTR¥¤¨OÃt1Ⱥøûïü«$¨ÈÍ\7AÒÇmt[¸Iøcº·Mò6)0$¼q)ö^1Íó7Ä"ÿ*    *rsÇ$×MôqÝn!þîm¼` ×SuI=
¹¹ãBë&@ú¸n7 L÷¶IÙ@ü$W
ùWI<ëÍG\7AÒÇmt[¸Iøcº·MÊOËQBþUäzsÇ$×MôqÝn!þîm²i`¹ªPÈ¿Jà\oî8äº    >n£ÛÂM ÄÓ½mRÁqº¹½äº >n£ÛÂM ÄÓ½mR6L¹*n*ò¯ x ×;$¹n¤Ûè¶p ñÇto
S®
ü«$Èõæ#I® éã 

等。等

这就是我试图用它做的事情 - 各种错误的开始:

    vm.getLabelBinaryData = function (labelId){
        labelsService.getShippingLabel(labelId).then (
            function success(response) {
                vm.openWindowForLabels(response.data);
            },
            function fail(response) {
                toastr.error(response.data);
            }
        );
    };
    vm.openWindowForLabels = function (responseData) {
        //var b64Response = btoa(rawResponse)
        var image = new Image();
        image.src = 'data:image/png;base64,' + responseData;
        var popupWin = window.open('', '_blank', 'width=1000,height=1000');
        popupWin.document.open();
        popupWin.document.write('<html><head></head><body></body></html>');
        popupWin.document.body.appendChild(image);  
        //popupWin.document.close();
    };        

当我检查HTML时,我看到了:

<html><head></head><body><img src="data:image/png;base64,�PNG&#13;&#10;&#10;

奇怪的是,在我的浏览器窗口中,我看到了关闭的img括号,以及关闭body和html标签。事实上,它没有复制导致他们相信数据要么长得太长而无法编辑,或者某些特殊字符在显示之前将其删除。

无论哪种方式,我都会看到一张破损的图片。

我很难过。

更新

我在这里找到了一个样本: https://en.wikipedia.org/wiki/Data_URI_scheme 所以我插入了我的代码:

    image.src = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAHElEQVQI12P4//8/w38GIAXDIBKE0DHxgljNBAAO9TXL0Y4OHwAAAABJRU5ErkJggg==';

......它确实显示红点很好。

这有力地表明我的代码工作正常,问题在于正确解析数据。 (我已经通过API开发人员验证了他在POSTMAN中看到了工作图像。)

0 个答案:

没有答案