使用c#字符串变量传递base64字符串。 错误:索引超出了数组的范围

还是一个新手。 我想用变量替换长Base64字符串,但不断收到错误:索引超出了数组的范围。

场景:我正在从SQL数据库中检索完整的base64字符串,例如data:image / gif; base64,R0lGODlhAQABAIAAAAAAAP /// yH5BAEAAAAALAAAAAABAAEAAAIBRAA7

然后我将字符串拆分为我想要的部分,在’,’之后。

public SqlDataReader reader; public String ClientSigImg; public String ClientSigImg1; ClientSigImg = reader[0].ToString(); ClientSigImg1 = ClientSigImg.Split(',')[1]; 

所以上面的base64字符串会改变用户输入,而不是像下面的手动输入

  string base64 = @"R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" byte[] imageBytes = Convert.FromBase64String(base64); 

我想用以下代码替换那个长字符串:

  string base64 = @""+ ClientSigImg1 +""; byte[] imageBytes = Convert.FromBase64String(base64); 

看起来好像:

 ClientSigImg = reader[0].ToString(); 

返回带逗号的字符串(请调试并确认)。 这意味着当这行代码运行时,您将看到您正在描述的错误:

 ClientSigImg1 = ClientSigImg.Split(',')[1]; 

这是因为索引1不存在。 因此,请检查您是否确实从查询中返回了正确的数据。

此外,一旦您的查询返回正确的数据,您可以整理您的代码,只需使用:

 byte[] imageBytes = Convert.FromBase64String(ClientSigImg1); 

那是因为:

 string base64 = @""+ ClientSigImg1 +""; 

除了在字符串之前和之后添加空字符串以外,实际上没有做任何事情,因此,不添加任何内容!