-1

当我尝试执行以下代码时:

byte[] arr= Convert.FromBase64String("1/50/Zoolz/Win-s9u0uco8ea0(11)/349.jpg")

我收到以下错误:

输入不是有效的 Base-64 字符串,因为它包含非 base-64 字符、两个以上的填充字符或填充字符中的非空白字符。

我可以解决谁?

4

3 回答 3

3

Convert.FromBase64String需要一个 base 64 编码的字符串作为参数,而不是包含 base 64 编码的文件的名称。

如果图像文件内容是 base 64 编码的,您首先应该读取文件,然后调用FromBase64String该内容,如下所示:

string baseText = File.ReadAllText(<filename>);
byte[] imageBytes = Convert.FromBase64String(baseText);
于 2013-02-05T09:01:27.873 回答
2

您没有将 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);
于 2013-02-05T08:59:22.503 回答
0

您没有使用 base 64 编码的字符串,它只是一个普通的字符串。如果您尝试创建测试,可以使用以下代码将字符串转换为 base64。

  string stringToBeEncoded = "some string";
  byte[] byteArray = System.Text.ASCIIEncoding.ASCII.GetBytes(stringToBeEncoded);
  string base64String = System.Convert.ToBase64String(byteArray);
于 2013-02-05T09:02:14.057 回答