我想做的事:
使用 jQuery.ajax() 从基本身份验证安全服务器 HTTP-GET 图像 (jpeg)。好像我得到了图像的一些数据,它必须是二进制的。我想将其转换为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)));
}
我从这里得到了这个功能: Retrieving binary file content using Javascript, base64 encode it and reverse-decode it using Python
他在那里说这对他有用。但在我的情况下,我的图像的 src 属性发生了变化,并且插入了一些很长的数据,但只出现了应该存在的图像的非常小的符号。我可以保存那个“图像”,那甚至不在那里,当我打开它时,我的图像查看器说它不是 jpeg 文件。这不是特定图像或同源策略引起的错误。有没有人解决这个问题?谢谢