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'});
}
});
wydaje się istotne: http://stackoverflow.com/questions/8390855/how-to-instantiate-a-file-object-in-javascript – Jonah