FileReader.readAsDataURL 在 Convert.FromBase64String 中输入时结果返回格式异常

FileReader.readAsDataURL result returning format exception when entered in Convert.FromBase64String

我正在使用以下方法将图像转换为 base64 编码的字符串。在 javascript 的客户网站上:

  var reader = new FileReader(); 
  reader.onloadend = function () {
                    data64 = reader.result;
                };

  reader.readAsDataURL(myFile);

现在我将此数据传递给服务器,服务器执行以下操作:

 var data = Convert.FromBase64String(data64);

但是这会导致格式异常:

The format of s is invalid. s contains a non-base-64 character, more than two padding characters, or a non-white space-character among the padding characters.

我的输入文件是在 Windows 7 -> 我的 Pictures/Sample Pictures/Tulips.jpeg

上找到的示例图像之一

我如何尝试调试导致如此大的结果输出出现问题的原因?

好的,我已经通过使用 reader.readAsBinaryString 来解决这个问题,然后使用 btoa.

转换它

这似乎在 Convert.FromBase64String

中被接受了

我遇到了同样的问题,发现我的完整dataurl不仅包含末尾的填充字符,而且还包含dataurl中间的填充字符。 我用下面的代码修复了base64string(但还是有bug):

private static string getCleanedBase64String(string base64String)
    {
        string tempString = base64String.Replace("_", "/").Replace("-", "+").Replace("=", "");
        return tempString + new string('=', (4 - tempString.Length % 4) % 4);
    }