Что я хочу сделать:
HTTP-GET изображение (jpeg) с помощью jQuery.ajax() из защищенного сервера basic-auth. кажется, что я получаю некоторые данные изображения, он должен быть двоичным. Я хочу преобразовать это в base64, потому что тогда я могу вставить это как изображение в свой html таким образом:
$("#image").attr('src', 'data:image/jpeg;base64,' + base64encode(data));
вызов ajax выглядит следующим образом:
$.ajax({
url: "someurltoajpeg",
type: "GET",
headers: {
"Authorization" : "Basic " + btoa("user:pw")
},
xhrFields: {
withCredentials: true
}
}).done(function( data, textStatus, jqXHR ) {
$("#image").attr('src', 'data:image/jpeg;base64,' + base64encode(data));
}).fail(function( jqXHR, textStatus, errorThrown ) {
alert("fail: " + errorThrown);
});
функция base64encode выглядит следующим образом:
function base64encode(binary) {
return btoa(unescape(encodeURIComponent(binary)));
}
Я получил эту функцию отсюда: Извлечение содержимого двоичного файла с использованием Javascript, base64 кодирует его и реверсирует его с помощью Python
там он говорит, что это работает для него. но в моем случае атрибут src моего изображения изменяется, а некоторые очень длинные данные вставляются, но только очень маленький символ для изображения должен появляться. я могу сохранить это "изображение", даже там, и когда я его открываю, мой просмотрщик изображений говорит, что это не файл jpeg. это не ошибка, вызванная конкретным изображением или той же политикой происхождения. есть ли у кого-нибудь решение? спасибо