Convert.FromBase64String Exception

本文关键字:Exception FromBase64String Convert | 更新日期: 2023-09-27 17:57:47

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

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

我收到以下错误:

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

谁能解决这个问题?

Convert.FromBase64String Exception

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

如果图像文件的内容是基于64编码的,那么您首先需要读取该文件,然后对该内容调用FromBase64String,如:

string baseText = File.ReadAllText(<filename>);
byte[] imageBytes = Convert.FromBase64String(baseText);

您不是将base64string传递给方法,而是将其传递路径。首先将图像转换为base64string,然后调用该字符串上的方法。

将图像转换为base64string

 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);

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

  string stringToBeEncoded = "some string";
  byte[] byteArray = System.Text.ASCIIEncoding.ASCII.GetBytes(stringToBeEncoded);
  string base64String = System.Convert.ToBase64String(byteArray);