在服务中我试图将base64字符串转换为sql Server的varbinary,反之亦然.
在SSMS中手动,我可以只使用base64字符串并插入如下行:
Cast(@base64ImgStr as varbinary(max))
但是当我尝试从C#插入时结果是不同的:
Convert.FromBase64String(base64);
(相同的输入).由于二进制文件不同,因此图像不显示.我需要一个C#中的方法,它提供与T-sql中相同的二进制文件.
我必须围绕解决方案,因为我可以在sql Server中投射并获得正确的base64(再次,不是在C#中),如下所示:
cast('' as xml).value('xs:base64Binary(sql:variable("@source"))','varchar(max)')
而不是base64我得到了Unicode符号,否则我会粘贴一个例子.
我需要在不调用sql Server base64Binary方法的情况下获取base64,因为我的服务读取如下图像:
Encoding.ASCII.GetString(varbinary)
如果我将手动插入的varbinary(Cast(@ base64ImgStr as varbinary(max)))转换为varchar(max),我会得到一个base64字符串,并且图像会在我的webapp中正确显示.
但是,当我使用C#方法创建二进制文件时,情况并非如此.对于我从Convert.FromBase64String(base64)获得的varbinary类型,我需要在sql Server(xs:base64binary)中进行中间转换,以将二进制文件反转为base64.没有中间转换,我得到Unicode符号,webapp中没有图像显示.我不想进行中间转换,因为无论用户上传图片还是有人手动插入图片,我都希望获得一致的结果.
我没有在Convert类上看到一个方法,它给了我相同类型的二进制文件.但这似乎正是我所需要的.我怀疑是Unicode.请帮忙!
解决方法
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。