从Web网址检索的图像作为varbinary列插入到SQL Server数据库中

问题描述

我有一个图像URL链接,我需要将其存储在SQL Server数据库中。我需要在SQL Server或SSIS中写一些东西才能从URL中获取该图像。

此处显示的代码的问题是响应文本为nvarchar(max),应为VarBinary(MAX)

这只是从数据库调用http请求的一种主意。我认为解决方案将是在SSIS的脚本组件中完成,是正确的还是有人有更好的主意?

DECLARE @status int
DECLARE @responseText AS TABLE (responseText nvarchar(max))
DECLARE @res AS Int;
DECLARE @url AS nvarchar(1000) = 'https://agriapp.azurewebsites.net/barcode/qr?id=LL-12345'

EXEC sp_OACreate 'MSXML2.ServerXMLHTTP',@res OUT
EXEC sp_OAMethod @res,'open',NULL,'GET',@url,'false'
EXEC sp_OAMethod @res,'send'
EXEC sp_OAGetProperty @res,'status',@status OUT

INSERT INTO @ResponseText (ResponseText) 
    EXEC sp_OAGetProperty @res,'responseText'

EXEC sp_OADestroy @res

SELECT 
    @status,CONVERT(VARBINARY(MAX),responseText) responseText 
FROM @responseText

解决方法

我相信您在responseText中得到的是base64编码的,您需要对其进行解码,或者将其从base64转换为varbinary。查看此博客文章:

T-SQL:轻松进行Base64编码和解码

https://medium.com/falafel-software/t-sql-easy-base64-encoding-and-decoding-872ad184bd7e

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...