使用Cassandra Database blob数据显示图像

时间:2014-01-29 12:17:57

标签: html node.js cassandra

我正在将图像存储到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

2 个答案:

答案 0 :(得分:2)

您的二进制内容将存储为Cassandra中具有大endianness的字节数组。为了使HTML正常工作,您需要首先将该字节数组转换为base64编码的字符串。

有一点需要注意 - 根据机器的体系结构,您可能需要先将字节数组转换回小端格式。如果您使用的是小端,那通常只需要反转字节数组的内容。

答案 1 :(得分:1)

Cassandra将数据存储为二进制。因此,如果您对文件代码的写入工作正常,我猜您的JS代码中的数据变量应该是您从Cassandra获得的base64编码值。