Convert.FromBase64String Exception

时间:2013-02-05 08:57:05

标签: c# asp.net

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

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

我收到以下错误:

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

我能解决谁?

3 个答案:

答案 0 :(得分:3)

Convert.FromBase64String期望基本64位编码的字符串作为参数,而不是包含基本64位编码的文件的名称。

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

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

答案 1 :(得分:2)

您没有将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);

答案 2 :(得分:0)

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

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