2016-03-31 109 views
1

Yodlee getMFAResponse tarafından döndürülen bayt dizisinden kodlanmış bir dize oluşturmaya çalışıyorum ([-1,0,2,-1] gibi bir şey görünüyor) böylece HTML'deki bir resim etiketinde kaynak olarak kullanabilirim Bir CAPTCHA görüntülemek için. (Bu aynı zamanda finansal kurumlar için imaj bilgisi elde etmeye çalışırken de bir sorun gibi görünüyor).Yodlee getMFAResponse Captcha için Byte Array

Bunu yapmak için , yanıt nesnesini bayt dizisini btoa() üzerinden geçirerek ve sonra data:image/???;base64, başlayan bir dizeye ekleyerek, ??? dosya tipi. Ben bitmap, jpeg, png, gif, vs denedim, ama hiçbiri işe yaramıyor. Biçimi belirlemek için 'sihirli dize' yöntemini de denedim, ancak bulabileceğim hiçbir biçime uymuyor. Bence asıl mesele, dosyanın formatını bilmem ama belki de sadece kod çözme işlemini düzgün yapmıyorum.

böyle bir şey ile sonuna kadar: Ben sadece, hem sunucu tarafı ve istemci tarafı JavaScript çalışıyorum

data:image/jpeg;base64,NjYsNzcsNTgsMTE2LDAsMCwwLDAsMCwwLDU0LDAsMCwwLDQwLDAsMCwwLC05MSwwLDAsMCw0NSwwLDAsMCwxLDAsMzIsMCwwLDAsMCwwLDQsMTE2LDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLC0xLC0xLC0xLDAsLTEsLTEsLTEsMCwtMSwtMSwtMSwwLC0xLC0xLC0xLDAsLTEsLTEsLTEsMCwtMSwtNSwtMSwwLC0xLC0xLC0xLDAsLTksLTksLTksMCwtMSwtNSwtMSwwLC0xLC0xLC0xLDAsLTEsLTUsLTEsMCwtMTcsLTE3LC0xNywwLC0xLC0xLC0xLDAsLTEsLTEsLTEsMCwtMSwtMSwtMSwwLC05LC0xMywtOSwwLC0xLC0xLC0xLDAsLTEsLTEsLTEsMCwtMSwtMSwtMSwwLC0xLC0xLC0xLDAsLTEsLTEsLTEsMCwtMSwtMSwtMSwwLC0xLC0xLC0xLDAsLTEsLTEsLTEsMCwtMSwtMSwtMSwwLC05LC05LC05LDAsLTEsLTEsLTEsMCwtMSwtMSwtMSwwLC0xLC0xLC0xLDAsLTEsLTEsLTEsMCwtMTcsMCwtMSwtMSwtMSwwLC0xLC0xLC0xLDAsLTEsLTEsLTEsMCwtMSwtMSwtMSwwLC0xLC0xLC0xLDAsLTEsLTEsLTEsMCwtMSwtMSwtMSwwLC0xLC0xLC0xLDAsLTEsLTEsLTEsMCwtMSwtMSwtMSwwLC0xLC0xLC0xLDAsLTEsLTEsLTEsMCwtMSwtMSwtMSwwLC0xLC0xLC0xLDAsLTEsLTEsLTEsMCwtMSwtMSwtMSwwLC0xLC0xLC0xLDA=' 

ve ben Yodlee cevapların ne en gibi görünüyor Java (bilmiyorum doğru yönlendirilmiştir). Bayt dizisinin kod çözülmesinin sorun olup olmadığı veya doğru görüntü formatını bilmediğim bir kayıpta yaşıyorum.

cevap

0

Base64 dizginizi js dosyamda denedim. resmi göstermiyor. btoa() için js koduna erişimim yok. Ancak, çalışma kodumu buraya yapıştırıyorum, belki de sorun byteArray'ı Base64'e dönüştürmekte. (Yodlee API'yi C#, angularJS kullanarak kullanmaya çalışıyorum).

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); 
} 

ve ben jQuery kullanarak <IMG /> doldurmak için benim js dosyasında nasıl kullandığımız sonra şudur: Bu umut verici görünüyor

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'ları tutarlı bir şekilde PNG formatında mı buldunuz? –

+0

@PAckerman Bu yöntemde captcha formatının önemli olmadığını düşünüyorum. Bu yöntemi kullanarak, captcha'dan tek ihtiyacımız olan ** biteArray **. Yukarıdaki koddaki _PNG_, resmi görüntülemek için sadece bir biçimdir. örneğin _JPEG_ olarak değiştirebilir ve jpeg formatında görüntüyü gösterir. Önemli olan ** byteArray ** 'in ** base64 **' e düzgün bir şekilde dönüştürülmesi ve görüntüye 'src' özniteliğine eklenmesidir. –