I'm probably missing something simple here, but how would I create a File object in JavaScript given the binary data as received from an AJAX request?
$.ajax({
url: ".jpg",
success: function(data) {
// Convert binary data to File object
}
});
I'm probably missing something simple here, but how would I create a File object in JavaScript given the binary data as received from an AJAX request?
$.ajax({
url: "http://example./image.jpg",
success: function(data) {
// Convert binary data to File object
}
});
Share
Improve this question
edited Aug 17, 2013 at 1:33
David Jones
asked Aug 17, 2013 at 0:05
David JonesDavid Jones
10.2k29 gold badges93 silver badges145 bronze badges
1
- this seems relevant: stackoverflow./questions/8390855/… – Jonah Commented Aug 17, 2013 at 0:26
1 Answer
Reset to default 12I finally figured this out. In order to avoid cross-site scripting issues, I created a proxy endpoint on my server. Then I can pass the image URL to my server, which then executes a GET request on the remote file, converts the response to Base64, and sends it back to the browser. The browser can then convert the data back to binary and create a Blob (which is as good as a File for my purposes).
$.ajax({
url: apiRoot + "/proxy",
data: {url: "http://example./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'});
}
});