我正在将图像存储到cassandra db(blob数据),我正在尝试获取数据并显示在我的html页面中,但它显示了一些垃圾数据。
我使用cassandra作为数据库,使用node js作为后端服务器,使用cassandara-client处理cassandra数据库。
完整描述 -
我可以将图像存储到cassandra数据库。
我也从cassandra数据库获取图像数据,但我不知道数据的格式是什么?(base64,二进制等等)。
我也可以使用以下代码将数据写入图像文件 -
var fs = require("fs");
fs.writeFile("file1.png", new Buffer(imgData, "base64"), function(err) {});
但我不想将数据写入文件。我想将数据直接流式传输到html中的图像。我使用下面的代码在我的html页面中显示图像 -
$.ajax({
url: 'http://10.0.0.1:3000/getMap',
type: 'GET',
headers: {
"accept": "image/jpg",
"content-Type": "image/jpg",
},
success: function(data) {
console.log("Inside success");
$('#mapdiv').html('<img src="data:image/jpg;base64,'+data+'" height="200px" width="500px"/>');
}
});
<div id="mapdiv"></div>
但是我在div中得到了一些垃圾数据。
提前致谢 Subhra
答案 0 :(得分:2)
您的二进制内容将存储为Cassandra中具有大endianness的字节数组。为了使HTML正常工作,您需要首先将该字节数组转换为base64编码的字符串。
有一点需要注意 - 根据机器的体系结构,您可能需要先将字节数组转换回小端格式。如果您使用的是小端,那通常只需要反转字节数组的内容。
答案 1 :(得分:1)
Cassandra将数据存储为二进制。因此,如果您对文件代码的写入工作正常,我猜您的JS代码中的数据变量应该是您从Cassandra获得的base64编码值。