我尝试从couchdb服务器获取二进制数据。但我可以使用它们。响应包含一个表示二进制数据的字符串,但是如果我尝试使用函数btoa在base64中编码,该函数会给我这个错误:
Uncaught InvalidCharacterError:'btoa'失败:要编码的字符串包含Latin1范围之外的字符。
我知道我可以在base64中直接编码数据,但我不想。
$.ajax({
url: "http://localhost:5984/testdb/7d9de7a8f2cab6c0b3409d4495000e3f/img",
headers: {
Authorization: 'Basic ' + btoa("name:password"),
},
success: function(data){
/*console.log(JSON.parse(jsonData));
console.log(imageData);*/
document.getElementById("immagine").src = "Data:image/jpg;base64," + btoa(data);
console.log(data);
}
});
任何想法?
答案 0 :(得分:0)
首先要了解 Base64字符串
中每个 char 的知识var chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'.split('');
表示数字,特别是从0
到63
。接下来,考虑这个数字范围是您可以使用6
位写入的所有数字,我们通常会考虑 bytes 中的二进制数据,它们是{{ 1}}位长。
所以现在我们可以得出结论,我们实现的转换是8
位整数到8
位整数,看起来有点像这样
6
其中每个字母描述该位所在的字节,空格描述xxxxxx xxyyyy yyyyzz zzzzzz
位整数之间的间隔。
一旦我们得到6
位数,我们就可以简单地转换为 char 并最终添加6
符号,如果我们需要指示字节数不是=
的倍数(并且它们不仅仅是3
)
那我们该怎么办?
0