2016-08-16 12 views
0

サードパーティのソースからWeb APIを使用してIonicアプリにPNG画像を読み込もうとしていますが、表示に失敗しています。私が受け取る応答は、私はバイト配列のデータであると信じるPNGのためのデータが含まれており、このように始まる:APIからのAngularJS/Ionic表示画像

PNG IHDRRl PHY ....

これが開始します次のAPI呼び出しを行うことにより:

function getImage(authToken) { 
    var settings = { 
    "async": true, 
    "crossDomain": true, 
    "url": imgLocation, 
    "method": "GET", 
    "headers": { 
     "auth-token": authToken, 
     "cache-control": "no-cache" 
    } 
    } 
    return $http(settings) 
    .then(function(response) { 
     return response; 
    }) 
    .catch(function(e) { 
     return e.data; 
    }); 
} 

その後、私のコントローラの内部で「画像」変数に適用されたデータ

$scope.image = response.data; 

私は、私はここで見つけるのBase64エンコード/デコード使用して、base64文字列にデータを変換しますhttps://stackoverflow.com/questions/246801/how-can-you-encode-a-string-to-base64-in-javascript

をそして最後に、私のHTMLの中に、私はこれがあります。

<img ng-src="data:image/PNG;base64,{{image}}"> 

を結果は画像が表示される場所の空のボックスで、壊れた画像リンクではありません。私はStackoverflowで見つかった様々なソリューションを試してきましたが、私は固執するものは何も得られません。

$compileProvider.aHrefSanitizationWhitelist(/^\s*(https?|file|ftp|blob):|data:image\//); 

...と私のindex.htmlに:だから、もう一度

<meta http-equiv="Content-Security-Policy" content="default-src *; script-src 'self' 'unsafe-inline' 'unsafe-eval' *; style-src 'self' 'unsafe-inline' *; img-src 'self' data: *"> 

が、私はPNG画像をロードしようとしていますまた、私は私の設定では、次のものがないことに注意すべきです私のアプリにAPIコールを介して。私は画像のバイト配列表現を受け取っていると思うが、私はそれをbase64に変換しようとすると、画像は読み込まれません。さらに、私はコンソールにエラーを受けていません。

誰かが私にいくつかの洞察力を提供できるなら、大きな助けになるでしょう、感謝します。

+0

私はまた、唯一の予想とまったく同じ出力を得るために)「ブロブ」オブジェクトにデータを入れた後、window.FileReader(からそれを読み取ろうとしました。しかし、画像はまだ正しく表示されません。 – user2980520

答えて

0

あなたの答えがあるスレッドがあります。あなたはあなたのオブジェクトからファイルを作成し、角度を信頼させる必要があります。 pdfについては、例のようにimgタグを使用して{{fileURL}}で画像をHTMLに追加することができます。

AngularJS: Display blob (.pdf) in an angular app