2010-12-04 31 views
2

J'utilise btoa et atob pour Base64 mais la méthode atob ne fonctionne pas sur les données binaires! Juste du texte. Comment puis-je resoudre ceci?Les méthodes Google Chrome Base64 sont-elles capables de gérer les données binaires à partir de l'API de fichier?

if(!!window.createBlobURL || !!window.createObjectURL) { 
    var bb = new BlobBuilder(); 
    var reader = new FileReader(); 
    var url_creator = window.createBlobURL || window.createObjectURL; 
    bb.append(atob(msg.bit.file.data)); 
    reader.onloadend = function(e) { 
     bb = new BlobBuilder(); 
     bb.append(e.target.result); 
     var url = url_creator(bb.getBlob(msg.bit.file.type)); 
     window.open(url); 
    } 
    reader.readAsBinaryString(bb.getBlob(msg.bit.file.type)); 
    } 

Où msg.bit.file.data est le fichier encodé en base64.

+0

Pouvez-vous montrer comment vous chargez les données binaires? Les données binaires sont-elles initialement en base64? Même si vous parvenez à le décoder, comment allez-vous l'afficher? – syockit

+3

Oui, s'il vous plaît poster un code qui montre exactement ce que vous essayez de faire. Sans cela, c'est assez difficile de répondre. – jorlow

Répondre

1

Si vos données sont déjà binaires (TypedArray) ajouter sur le BlobBuilder devrait simplement fonctionner.

Si les données sont renvoyées de XMLHttpRequest dans Chrome au moins vous avez accès à la propriété responseBlob, qui peut être utilisé directement dans BlobBuilder.append()

+0

La définition de 'xhr.responseType = 'blob' 'n'est pas encore implémentée dans Chrome. Star [crbug.com/52486] (http://www.crbug.com/52486). – ebidel