簡體   English   中英

Node.js如何從MS Sql server數據類型的varbinary轉換為圖像

[英]Node.js How to convert to image from varbinary of MS Sql server datatype

我正在訪問存儲在varbinary列中的圖像的第三方數據庫。 我正在編寫node.js應用程序,以將存儲在MS Sql server中的varbinary圖像恢復為.jpg文件。

當我查詢varbinary作為緩沖區返回但是從緩沖區我無法將圖像恢復為.jpg文件。

對於MS Sql server訪問,我使用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如何工作之前很難。

解決方案:圖像作為數據類型varbinary存儲為Sql server中base64編碼字符串的十六進制數字表示形式。 在獲取記錄node.js mssql庫時,將十六進制數轉換為javascript緩沖區(此緩沖區是base64編碼的字符串而不是實際圖像)。 然后我將此緩沖區轉換回base64編碼的圖像字符串,如..

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

然后創建轉換回實際圖像緩沖區,如..

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);
    });

注意: Node.js mssql庫對varbinary的字符串表示的工作方式不同(返回的緩沖區是原始字符串的表示,因此不需要按照上述步驟)和varbinary的image / doc表示(返回的緩沖區是base64編碼字符串的表示,需要遵循以上步驟)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM