Получить изображение с помощью jQuery.ajax () и декодировать его в base64
Что я хочу сделать:
HTTP-GET изображение (jpeg) с помощью jQuery.ajax () с защищенного сервера с базовой аутентификацией. кажется, что я получаю некоторые данные изображения, оно должно быть двоичным. я хочу преобразовать это в 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. это не ошибка, вызванная определенным образом или той же самой политикой происхождения. кто-нибудь есть решение этого? Спасибо