如何将bas64转换为varbinary(max)

时间:2019-11-22 13:57:31

标签: javascript sql-server pdf

我需要将base64字符串作为varbinary传递给sql查询。 我尝试使用

获取base64的二进制值
let printableReport = atob(base64)

并将printableReport值传递给sql更新查询。

我尝试了多种方法将二进制值作为varbinary(max)传递给sql查询。

let qry = `update ${tableName} set PrintableReport = CONVERT(varbinary(MAX),'${printableReport}') where TransactionId = '${transactionId}'`
  

错误:“消息”:“'ðÊ\u0016¼«þWÚC> \u0001õ³àÌ¥Îqq(&¢©\ r \ u0016 * \u001bê䪰Á0'Ljï。\ u001c»@ t·$ë。'是无效的名称,因为它包含NULL字符或无效的Unicode字符。”

let qry = `update ${tableName} set PrintableReport = (select * from OPENROWSET(BULK '${filePath}', SINGLE_BLOB) as varbinary(MAX)) where TransactionId = '${transactionId}'`

let qry = `update ${tableName} set PrintableReport = (SELECT CAST(bulkcolumn AS VARBINARY(MAX)) FROM OPENROWSET(BULK '${filePath}',SINGLE_BLOB) AS x) where TransactionId = '${transactionId}'`

let qry = `DECLARE @pdf VARBINARY(MAX) SELECT @pdf = BulkColumn FROM OPENROWSET(BULK N'${filePath}', SINGLE_BLOB) AS Document; SELECT @pdf, DATALENGTH(@pdf) update ${tableName} set PrintableReport = (@pdf) where TransactionId = '${transactionId}'`
  

错误:“消息”:“由于无法打开文件\” C:\ projects \ result_binary.pdf \“,因此无法批量加载。操作系统错误代码(空)。”

请为我建议实现此目标的正确方法。

1 个答案:

答案 0 :(得分:0)

我可以使用从base64转换的二进制值更新记录。 这是查询:

let qry = `update ${tableName} set PrintableReport = CAST(N'' AS XML).value('xs:base64Binary("${printableReport}")', 'VARBINARY(MAX)') where TransactionId = '${transactionId}'`
相关问题