【发布时间】:2021-10-14 05:10:49
【问题描述】:
我已使用此处找到的工具将图像转换为 Base64 字符串 https://codebeautify.org/base64-encode 并插入到 (2015 SQL Server) 表中的 (varchar(max)) 列中。 SQL 插入的执行本身没有问题并且是成功的。当尝试使用以下代码转换 base64 字符串时,问题出现在我的 C# 程序(VS 2019)中:
byte[] bytes = Convert.FromBase64String(image);
我收到 Base-64 字符数组或字符串错误的长度无效。根据之前的一些帖子,我尝试在字符串末尾添加填充,但我没有运气。
**更新** 我已经解决了这个问题。我找到了一个对我有用的不同转换工具。 https://elmah.io/tools/base64-image-encoder/
【问题讨论】:
-
docs.microsoft.com/en-us/dotnet/api/… - 你不需要从某些网站上复制粘贴东西 - 可能是错误出现的地方。比较 c# 所做的前向转换与数据库中的值,会出错
-
我尝试了第二种解决方案,但没有成功。我们目前有一个使用 Base64 字符串表示的图像并使用之前列出的 Convert 函数的过程,没有任何问题。该 base64 字符串存储在我正在使用的同一个 SQL 表/列中。我已经复制了那个字符串并用它更新了我的记录,但没有运气。
-
我不太明白这个“复制...” - 为什么不直接执行
var cmd = new SqlCommand("INSERT INTO x VALUES(@b64str)", connstr),cmd.Parameters.AddWithValue("@b64str", Convert.ToBase64String(File.ReadAllBytes("path/to.image")));?然后你可以下载它,Convert.FromB64String,看看它是否有效..如果有效,请随意将 in db 值与您从某个网站复制的值进行比较... -
在 SSMS 中,我执行了一个简单的从表中选择图像,在输出窗口中,结果集包含我复制字符串并尝试在 SSMS 中对我的使用我刚刚复制的那个字符串进行图像记录。
-
您知道 SSMS 网格单元有长度限制,对吧?所有这些“复制到这里”、“复制到那里”只会让你的生活变得很辛苦,尤其是处理图像数据之类的东西,这很容易超过 SSMS 中配置的任何限制;如果你从一开始就在 C# 中完成了读取和写入,那么你已经完成了......
标签: c# sql-server base64 data-conversion