2013-08-17 10 views
5

Ich vermisse hier wahrscheinlich etwas Einfaches, aber wie würde ich ein Dateiobjekt in JavaScript erstellen, wenn die Binärdaten von einer AJAX-Anfrage erhalten werden?Wie erstellt man ein Dateiobjekt aus Binärdaten in JavaScript

$.ajax({ 
    url: "http://example.com/image.jpg", 
    success: function(data) { 
    // Convert binary data to File object 
    } 
}); 
+0

scheint relevant: http://stackoverflow.com/questions/8390855/how-to-instantiate-a-file-object-in-javascript – Jonah

Antwort

11

Ich endlich herausgefunden. Um Cross-Site-Scripting-Probleme zu vermeiden, habe ich einen Proxy-Endpunkt auf meinem Server erstellt. Dann kann ich die Image-URL an meinen Server übergeben, der dann eine GET-Anforderung für die Remote-Datei ausführt, die Antwort in Base64 konvertiert und sie zurück an den Browser sendet. Der Browser kann dann die Daten zurück in Binär konvertieren und einen Blob erstellen (der für meine Zwecke so gut wie eine Datei ist).

$.ajax({ 
    url: apiRoot + "/proxy", 
    data: {url: "http://example.com/image.jpg"}, 
    success: function(data) { 
    var binary = atob(data.split(',')[1]); 
    var array = []; 
    for (var i = 0; i < binary.length; i++) { 
     array.push(binary.charCodeAt(i)); 
    } 
    var file = new Blob([new Uint8Array(array)], {type: 'image/jpeg'}); 
    } 
}); 
+1

wenn ich 'var Datei verwendet = new File ([new Uint8Array (Array)], {Typ: 'image/jpeg'}); 'Wie bekomme ich den Namen des Bildes? – CENT1PEDE

Verwandte Themen