2016-03-31 5 views
1

Yodlee getMFAResponse([-1,0,2,-1]などのように見える)で返されたバイト配列からエンコードされた文字列を作成しようとしています。これをHTMLのイメージタグのソースとして使用できます。 CAPTCHAを表示します。 (これはまた、金融機関の画像情報を取得しようとするときにも問題になると思われる)。Yodlee getMFAResponseキャプチャ用のバイト配列

これを達成するには、btoa()を通過させてからdata:image/???;base64,を開始する文字列に追加する、応答オブジェクトからバイト配列を取り出します。ファイルタイプです。私はビットマップ、JPEG、PNG、GIFなどを試してみましたが、どれもうまくいかないようです。私はまた、フォーマットを決定するために 'magic string'メソッドを試しましたが、それは私が見つけることができるフォーマットに一致しません。私は、ファイルの形式がわからないことが大きな問題だと思っていますが、おそらく私はちょうどデコードを正しく行っていません。私は、唯一のJavaScriptでサーバ側とクライアント側の両方を働いている、と私はYodleeの答えの何ほとんどのようですJavaの(知らない

data:image/jpeg;base64,NjYsNzcsNTgsMTE2LDAsMCwwLDAsMCwwLDU0LDAsMCwwLDQwLDAsMCwwLC05MSwwLDAsMCw0NSwwLDAsMCwxLDAsMzIsMCwwLDAsMCwwLDQsMTE2LDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLC0xLC0xLC0xLDAsLTEsLTEsLTEsMCwtMSwtMSwtMSwwLC0xLC0xLC0xLDAsLTEsLTEsLTEsMCwtMSwtNSwtMSwwLC0xLC0xLC0xLDAsLTksLTksLTksMCwtMSwtNSwtMSwwLC0xLC0xLC0xLDAsLTEsLTUsLTEsMCwtMTcsLTE3LC0xNywwLC0xLC0xLC0xLDAsLTEsLTEsLTEsMCwtMSwtMSwtMSwwLC05LC0xMywtOSwwLC0xLC0xLC0xLDAsLTEsLTEsLTEsMCwtMSwtMSwtMSwwLC0xLC0xLC0xLDAsLTEsLTEsLTEsMCwtMSwtMSwtMSwwLC0xLC0xLC0xLDAsLTEsLTEsLTEsMCwtMSwtMSwtMSwwLC05LC05LC05LDAsLTEsLTEsLTEsMCwtMSwtMSwtMSwwLC0xLC0xLC0xLDAsLTEsLTEsLTEsMCwtMTcsMCwtMSwtMSwtMSwwLC0xLC0xLC0xLDAsLTEsLTEsLTEsMCwtMSwtMSwtMSwwLC0xLC0xLC0xLDAsLTEsLTEsLTEsMCwtMSwtMSwtMSwwLC0xLC0xLC0xLDAsLTEsLTEsLTEsMCwtMSwtMSwtMSwwLC0xLC0xLC0xLDAsLTEsLTEsLTEsMCwtMSwtMSwtMSwwLC0xLC0xLC0xLDAsLTEsLTEsLTEsMCwtMSwtMSwtMSwwLC0xLC0xLC0xLDA=' 

:私はこのようなもので終わる

方向づけられている)。私は、バイト配列のデコードが問題であるのか、それとも実際のイメージフォーマットがわからないのかを犠牲にしています。

答えて

0

jsファイルでBase64文字列を試しました。それはイメージを表示していません。 btoa()のjsコードにアクセスできません。しかし、私はここに私の作業コードを貼り付け、おそらく問題は、byteArrayをBase64に変換することにあります。 (私はC#、angularJSを使用してYodlee APIを使用しています)。

function _arrayBufferToBase64(biteArray) { 
    var binary = ''; 
    var bytes = new Uint8Array(biteArray); 
    var len = bytes.byteLength; 
    for (var i = 0; i < len; i++) { 
     binary += String.fromCharCode(bytes[i]); 
    } 
    return window.btoa(binary); 
} 

、その後、これは私がjQueryのを使用して<IMG />を移入するために私のjsファイルでそれを使用する方法である:

let captchaImage64 = _arrayBufferToBase64(mfaLoginForm.fieldInfo.image); 
       let captchaImage = $('<img />', { 
        src: "data:image/png;base64," + captchaImage64, 
        class: "img img-responsive", 
        style: "margin:auto; max-width:250px; margin-bottom: 15px;" 
       }); 

let captchaContainer = $('<div />', { 
        class: "form-group row", 
        id: "captchaContainer" 
       }); 

captchaContainer.append(captchaImage); 
+0

これは有望と思われます。 captchaが一貫してPNG形式になっていますか? –

+0

@PAckerman私はcaptcha形式はこの方法では問題ではないと思います。このメソッドを使うと、captchaから必要なのは** biteArray **だけです。上のコードの_PNG_はイメージを表示する単なるフォーマットです。それを例えば_JPEG_に変更することができ、画像をjpeg形式で表示します。重要なのは、** byteArray **を** base64 **に正しく変換してイメージの 'src'属性に追加することです。 –