Node.js如何从MS Sql server数据types的varbinary转换为图像

我访问存储在varbinary列中的图像的第三方数据库。 我正在编写node.js应用程序,以将存储在MS Sql服务器中的varbinary图像恢复为.jpg文件。

当我查询varbinary返回缓冲区,但从缓冲区我不能够恢复图像到.jpg文件。

对于MS Sql服务器访问,我使用https://www.npmjs.com/package/mssql libray。

[更新:] :下面是我试图转换和保存为图像的一些方法。

var decodedImage = new Buffer(varbinaryBufferReturedFromDatabase, 'base64'); var decodedImage = new Buffer(varbinaryBufferReturedFromDatabase, 'hex'); var decodedImage = new Buffer(varbinaryBufferReturedFromDatabase, 'uft8'); var decodedImage = varbinaryBufferReturedFromDatabase.toString('hex'); var decodedImage = varbinaryBufferReturedFromDatabase.toString('base64'); var decodedImage = varbinaryBufferReturedFromDatabase.toString('uft8'); fs.writeFile(__dirname+'/../public/images/img3.jpg', decodedImage, function(err, data){ if (err) throw err; console.log('It\'s saved!'); cb(data); }); 

解决之前,我很难研究如何编码/解码和varbinary的作品。

解决scheme:图像作为数据typesvarbinary存储为Sql服务器中base64编码string的hex数字表示forms。 在获取loggingnode.js时,mssql库将hex数字转换为javascript缓冲区(此缓冲区是base64编码的string,而不是实际的图像)。 然后我把这个缓冲区转换回base64编码的图像像..

 var originalBase64ImageStr = new Buffer(resultSet[0].Image).toString('utf8'); 

然后创build转换回像实际的图像缓冲区..

 var decodedImage = new Buffer(originalBase64ImageStr , 'base64') fs.writeFile(__dirname+'/../public/images/img3.jpg', decodedImage, function(err, data){ if (err) throw err; console.log('It\'s saved!'); cb(data); }); 

注意:对于varbinary的string表示,Node.js mssql库的工作方式不同(返回的缓冲区是原始string的表示,因此不需要按照上述步骤操作)以及varbinary的image / doc表示forms(返回的缓冲区是base64编码string的表示forms,需要遵循以上步骤)。