当我尝试执行以下代码时:
byte[] arr= Convert.FromBase64String("1/50/Zoolz/Win-s9u0uco8ea0(11)/349.jpg")
我收到以下错误:
输入不是有效的 Base-64 字符串,因为它包含非 base-64 字符、两个以上的填充字符或填充字符中的非空白字符。
我可以解决谁?
Convert.FromBase64String
需要一个 base 64 编码的字符串作为参数,而不是包含 base 64 编码的文件的名称。
如果图像文件内容是 base 64 编码的,您首先应该读取文件,然后调用FromBase64String
该内容,如下所示:
string baseText = File.ReadAllText(<filename>);
byte[] imageBytes = Convert.FromBase64String(baseText);
您没有将 base64string 传递给该方法,而是将其传递路径首先将图像转换为 base64string,然后对该字符串调用方法。
将图像转换为 base64 字符串
using (var fs = new FileStream(filename, FileMode.Open, FileAccess.Read))
{
var buffer = new byte[fs.Length];
fs.Read(buffer, 0, (int)fs.Length);
string base64 = Convert.ToBase64String(buffer);
}
将base64string转换为图像
byte[] imageBytes = Convert.FromBase64String(imgBase64String);
MemoryStream ms1 = new MemoryStream(imageBytes);
Image img = Image.FromStream(ms1);
您没有使用 base 64 编码的字符串,它只是一个普通的字符串。如果您尝试创建测试,可以使用以下代码将字符串转换为 base64。
string stringToBeEncoded = "some string";
byte[] byteArray = System.Text.ASCIIEncoding.ASCII.GetBytes(stringToBeEncoded);
string base64String = System.Convert.ToBase64String(byteArray);