如何从couchdb附件转换base64中的二进制数据

时间:2014-01-13 21:12:55

标签: javascript couchdb binaryfiles

我尝试从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);
        }
    });

任何想法?

1 个答案:

答案 0 :(得分:0)

首先要了解 Base64字符串

中每个 char 的知识
var chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'.split('');

表示数字,特别是从063。接下来,考虑这个数字范围是您可以使用6位写入的所有数字,我们通常会考虑 bytes 中的二进制数据,它们是{{ 1}}位长。

所以现在我们可以得出结论,我们实现的转换是8位整数到8位整数,看起来有点像这样

6

其中每个字母描述该位所在的字节,空格描述xxxxxx xxyyyy yyyyzz zzzzzz 位整数之间的间隔。

一旦我们得到6位数,我们就可以简单地转换为 char 并最终添加6符号,如果我们需要指示字节数不是=的倍数(并且它们不仅仅是3

那我们该怎么办?

0