2013-08-17 10 views
5

Prawdopodobnie brakuje mi czegoś prostego tutaj, ale jak utworzyć obiekt File w JavaScript, biorąc pod uwagę dane binarne otrzymane z żądania AJAX?Jak utworzyć obiekt File z danych binarnych w JavaScript

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

wydaje się istotne: http://stackoverflow.com/questions/8390855/how-to-instantiate-a-file-object-in-javascript – Jonah

Odpowiedz

11

W końcu to wymyśliłem. Aby uniknąć problemów z wykonywaniem skryptów cross-site, utworzyłem punkt końcowy proxy na moim serwerze. Następnie mogę przekazać adres URL obrazu do mojego serwera, który następnie wykonuje żądanie GET na zdalnym pliku, konwertuje odpowiedź na Base64 i odsyła ją do przeglądarki. Przeglądarka może następnie przekonwertować dane z powrotem na plik binarny i utworzyć obiekt Blob (który jest tak dobry, jak plik dla moich celów).

$.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

jeśli użyłem 'var plik = new File ([nowa Uint8Array (array)], {type: 'image/jpeg'}); 'jak mogę uzyskać nazwę obrazu? – CENT1PEDE

Powiązane problemy