2012-05-24 16 views
5

Immer noch nach vielen Versuchen zu kämpfen, die Antwort eines httprequest zu lesen, das ein binärer Datenstrom ist, der ein jpg Bild darstellt.httprequest und binäre Daten in Javascript

edit: das Ganze

xmlhttp = false; 
     /*@[email protected]*/ 
     /*@if (@_jscript_version >= 5) 
     // JScript gives us Conditional compilation, we can cope with old IE versions. 
     // and security blocked creation of the objects. 
     try { 
      xmlhttp = new ActiveXObject("Msxml2.XMLHTTP"); 
     } catch (e) { 
      try { 
       xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); 
      } catch (E) { 
       xmlhttp = false; 
      } 
     } 
     @[email protected]*/ 
     if (!xmlhttp && typeof XMLHttpRequest != 'undefined') { 
      try { 
       xmlhttp = new XMLHttpRequest(); 
      } catch (e) { 
       xmlhttp = false; 
      } 
     } 
     if (!xmlhttp && window.createRequest) { 
      try { 
       xmlhttp = window.createRequest(); 
      } catch (e) { 
       xmlhttp = false; 
      } 
     } 

     xmlhttp.open("GET", theUrl, true); 
     xmlhttp.onreadystatechange = function() { 
      if (xmlhttp.readyState == 4) { 

       var headers = xmlhttp.getAllResponseHeaders(); 
      } 
     } 

     xmlhttp.send(null); 

ich IE8 benutze und keine HTML-5 (auch in FF12 versucht) so immer, dass ich mit Fehlern am Ende mit etwas wie

xhr.overrideMimeType('text\/plain; charset=x-user-defined'); 

oder

xhr.responseType = "arraybuffer"; 

sogar Kopieren in eine Variable wird nicht funktionieren

var body = xhr.response; //.responseText , .responseBody 

irgendwelche ideen was ist falsch oder was könnte ich versuchen?

+0

Warum? Was versuchst du zu erreichen? Kann Ihr Server B64-Kodierung durchführen? – mplungjan

+0

nein es ist ein Embedded-Gerät und das Unternehmen wird nicht ändern ihre Schnittstelle traurig – Gobliins

+0

Aber wie sollen Sie dann die binären Daten auf der Skript-Seite verwenden? – Raffaele

Antwort

1

Ich machte this example, um binäres JPEG auf clientseitig zu lesen und EXIF-Daten zu analysieren. Es verwendet BinFileReader.js, was es sehr einfach macht, mit binären Daten, Cross-Browser umzugehen. Here is the whole thing in a zip file, einschließlich eines node-basierten Web-Servers (mit Knoten Server.js ausgeführt) Ich habe auch eine .

Wenn Sie nur ein Bild aus dem binären Stream erstellen, warum fügen Sie einfach <img src="blah" /> zu Ihrem DOM hinzu?

$('body').append('<img src="' + URL + '"/>'); 
+0

Beantwortet das Ihre Frage? – konsumer