【问题标题】:Error : The input is not a valid Base-64 string错误:输入不是有效的 Base-64 字符串
【发布时间】:2020-04-03 14:24:41
【问题描述】:
<div id="container">
    <video autoplay="true" id="videoElement">
    </video>
    <canvas id="myCanvas" width="400" height="350"></canvas>
    <button onclick="snapshot()">Click</button>
</div>

在这里,我通过 ajax 调用将 imgInfo 的值传递给我的 MVC 控制器。

<script>
    var video = document.querySelector("#videoElement");
    var canvas = document.getElementById("myCanvas");
    var ctx = canvas.getContext('2d');

    if (navigator.mediaDevices.getUserMedia) {
        navigator.mediaDevices.getUserMedia({ video: true })
            .then(function (stream) {
                video.srcObject = stream;
            });
    }

    function snapshot() {
        // Draws current image from the video element into the canvas
        ctx.drawImage(video, 0, 0, canvas.width, canvas.height);
        var imgInfo = canvas.toDataURL("image/png");
        console.log(imgInfo);
        var image = imgInfo; // to create a image read the previous example

        $.ajax({
            url: "@Url.Action("Contact","Home")",
            // send the base64 post parameter
            data: {
                base64: image
            },
            // important POST method !
            type: "post",
            complete: function () {
                console.log("Ready");
            }
        });
    }
</script>

我将此数据传递给联系控制器,它给了我Convert.FromBase64String() 中的错误..

输入不是有效的 Base64 字符串,因为它包含的字符不是 base 64 字符、两个以上的填充字符或填充字符中的无效字符

[HttpPost]
public ActionResult Contact(string base64)
{
    var arr = Convert.FromBase64String(base64); //this line gives error.
    Stream stream = new MemoryStream(arr);
}

字符串控制器正在接收

"data:image/png;base64,iVBsRq1Hm1dxzRO0XRdtB3rHjGO3o/DOOpZtoO+HM08RFvV0VRNVLzPtoqZ/aO7a7T20XYRsY1an8nzrKLvD2Kqxph1hxtdcx6nGOZe+1V7i7c09tFFHcsxotuOsYltnC8qFjDGaeZla3+NVR3TPOo9tXPEIqqYFpP2FHt6mip2bDQt73wbUfXRdry7Kpp5FXM96P2x1tzVPHVs0d2vqamjm3lGv3P2SsOJqrqodQ9TzBPntY2m64NtV0/siyqGRRt9XceyrWJZNXqeYaqimg9irhfas9M8xHo8jXqaoh11amIYNlG1c2yaMeppjGWz0M92bRf11EZbs15z9PMUw6JjU0RU51FNTVRTG3V1I4a5i7ZTqWCBQ0g6Sn0gNTwFtlDXz80k256S07YU/VP2nQ2b59+/kX78uuv2oOPkD+3NvPs5NAmCvW5oz9evmw///RjW67+USLEO2YfS4igIEhllfc+dZ5HApCJdRIlAlvaOKFMC1fWgKVzL/72pQ/XGZwKxcb/p6xEXROyvtqN2tR80bEeQPdH+dsugEwvY6NPufXDeHn38qD24P9fxkKn2P//6uy0WCzntkStJE5os58njJ+3i6dMASUVORK5CYII="

如何将此字符串转换为base64 格式?

【问题讨论】:

    标签: javascript c# ajax asp.net-mvc


    【解决方案1】:

    您可以通过从字符串中删除 data:image/png;base64, 来解决此问题,例如:

    public ActionResult Contact(string base64)
    {
       if (base64.IndexOf(',') > 0)
       {
          base64 = base64.Substring(base64.IndexOf(',') + 1);
       }
       var arr = Convert.FromBase64String(base64);
       Stream stream = new MemoryStream(arr);
    
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-02-13
      • 1970-01-01
      • 1970-01-01
      • 2012-09-22
      相关资源
      最近更新 更多