首页 > 解决方案 > Base64 无法转换回图像

问题描述

我试图从 ajax 帖子转换 Base64 字符串,并且请求似乎工作正常 - 成功返回。

但是当我尝试将其转换回图像时,它给了我这个错误:

mscorlib.dll 中出现“System.FormatException”类型的异常,但未在用户代码中处理

附加信息:输入不是有效的 Base-64 字符串,因为它包含非 base 64 字符、两个以上的填充字符或填充字符中的非法字符。

[WebMethod(EnableSession = true)]
public static string insertFile(string base64File)
{


    string path = HttpContext.Current.Server.MapPath("~/Users/Organizer/organizersData/"); // de path


    //Check if directory exist
    if (!Directory.Exists(path))
    {
        Directory.CreateDirectory(path); //Create directory if it doesn't exist
    }


    string imageName = "event1" + ".jpg";// for instance 

    //set the image path 
    string imgPath = Path.Combine(path, imageName);
    string convert = base64File.Replace("data:image/png;base64,", String.Empty).Replace("data:image/jpg;base64,", String.Empty).Replace("data:image/bmp;base64,", string.Empty); ;

    string converted = convert.Replace('-', '+');
    converted = converted.Replace('_', '/');

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

    File.WriteAllBytes(imgPath, imageBytes); //write the file in the directory 



    return "success";


}

这是base64字符串..

数据:文本/html;base64,PCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBYSFRNTCAxLjAgU3RyaWN0Ly9FTiIgImh0dHA6Ly93d3cudzMub3JnL1RSL3hodG1sMS9EVEQveGh0bWwxLXN0cmljdC5kdGQiPiAKPGh0bWwgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiPiAKPGhlYWQ+IAo8dGl0bGU+SUlTIDEwLjAgRGV0YWlsZWQgRXJyb3IgLSA0MDQuMCAtIE5vdCBGb3VuZDwvdGl0bGU+ZXIgZmllbGRzZXR7cGFkZGluZy1ib3R0b206NXB4O21hcmdpbi10b3A6NHB4O30gCmxlZ2VuZC5uby1leHBhbmQtYWxse3BhZGRpbmc6MnB4IDE1cHggNHB4IDEwcHg7bWFyZ2luOjAgMCAwIC0xMnB4O30gCmxlZ2VuZHtjb2xvcjojMzMzMzMzOzttYXJnaW46NHB4IDAgOHB4IC0xMnB4O19tYXJnaW4tdG9wOjBweDsgCmZvbnQtd2VpZ2h0OmJvbGQ7Zm9udC1zaXplOjFlbTt9IAphOmxpbmssYTp2aXNpdGVke2NvbG9yOiMwMDdFRkY7Zm9udC13ZWlnaHQ6Ym9sZDt9IAphOmhvdmVye3RleHQtZGVjb3JhdGlvbjpub25lO30gCmgxe2ZvbnQtc2l6ZToyLjRlbTttYXJnaW46MDtjb2xvcjojRkZGO30gCmgye2ZvbnQtc2l6ZToxLjdlbTttYXJnaW46MDtjb2xvcjojQ0MwMDAwO30gCmgze2ZvbnQtc2l6ZToxLjRlbTttYXJnaW46MTBweCAwIDAgMDtjb2xvcjojQ0MwMDAwO30gCmg0e2ZvbnQtc2l6ZToxLjJlbTttYXJnaW46MTBweCAwIDVweCAwOyAKfSNoZWFkZXJ7d2lkdGg6OTYlO21hcmdpbjowIDAgMCAwO3BhZGRpbmc6NnB4IDIlIDZweCAyJTtmb250LWZhbWlseToidHJlYnVjaGV0IE1TIixWZXJkYW5hLHNhbnMtc2VyaWY7IAogY29sb3I6I0ZGRjtiYWNrZ3JvdW5kLWNvbG9yOiM1Qzg3QjI7IAp9I2NvbnRlbnR7bWFyZ2luOjAgMCAwIDIlO3Bvc2l0aW9uOnJlbGF0aXZlO30gCi5zdW1tYXJ5LWNvbnRhaW5lciwuY29udGVudC1jb250YWluZXJ7YmFja2dyb3VuZDojRkZGO3dpZHRoOjk2JTttYXJnaW4tdG9wOjhweDtwYWRkaW5nOjEwcHg7cG9zaXRpb246cmVsYXRpdmU7fSAKLmNvbnRlbnQtY29udGFpbmVyIHB7bWFyZ2luOjAgMCAxMHB4IDA7IAp9I2RldGFpbHMtbGVmdHt3aWR0aDozNSU7ZmxvYXQ6bGVmdDttYXJnaW4tcmlnaHQ6MiU7IAp9I2RldGFpbHMtcmlnaHR7d2lkdGg6NjMlO2Zsb2F0OmxlZnQ7b3ZlcmZsb3c6aGlkZGVuOyAKfSNzZXJ2ZXJfdmVyc2lvbnt3aWR0aDo5NiU7X2hlaWdodDoxcHg7bWluLWhlaWdodDoxcHg7bWFyZ2luOjAgMCA1cHggMDtwYWRkaW5nOjExcHggMiUgOHB4IDIlO2NvbG9yOiNGRkZGRkY7IAogYmFja2dyb3VuZC1jb2xvcjojNUE3RkE1O2JvcmRlci1ib3R0b206MXB4IHNvbGlkICNDMUNGREQ7Ym9yZGVyLXRvcDoxcHggc29saWQgIzRBNkM4RTtmb250LXdlaWdodDpub3JtYWw7IAogZm9udC1zaXplOjFlbTtjb2xvcjojRkZGO3RleHQtYWxpZ246cmlnaHQ7IAp9I3NlcnZlcl92ZXJzaW9uIHB7bWFyZ2luOjVweCAwO30gCnRhYmxle21hcmdpbjo0cHggMCA0cHggMDt3aWR0aDoxMDAlO2JvcmRlcjpub25lO30gCnRkLHRoe3Zl+IAo8L3N0eWxlPiAKIAo8L2hlYWQ+IAo8Ym9keT4gCjxkaXYgaWQ9ImNvbnRlbnQiPiAKPGRpdiBjbGFzcz0iY29udGVudC1jb250YWluZXIiPiAKICA8aDM+SFRUUCBFcnJvciA0MDQuMCAtIE5vdCBGb3VuZDwvaDM+IAogIDxoND5UaGUgcmVzb3VyY2UgeW91IGFyZSBsb29raW5nIGZvciBoYXMgYmVlbiByZW1vdmVkLCBoYWQgaXRzIG5hbWUgY2hhbmdlZCwgb3IgaXMgdGVtcG9yYXJpbHkgdW5hdmFpbGFibGUuPC9oND4gCjwvZGl2PiAKPGRpdiBjbGFzcz0iY29udGVudC1jb250YWluZXIiPiAKIDxmaWVsZHNldD48aDQ+TW9zdCBsaWtlbHkgY2F1c2VzOjwvaDQ+IAogIDx1bD4gCTxsaT5UaGUgZGlyZWN0b3J5IG9yIGZpbGUgc3BlY2lmaWVkIGRvZXMgbm90IGV4aXN0IG9uIHRoZSBXZWIgc2VydmVyLjwvbGk+IAk8bGk+VGhlIFVSTCBjb250YWlucyBhIHR5cG9ncmFwaGljYWwgZXJyb3IuPC9saT4gCTxsaT5BIGN1c3RvbSBmaWx0ZXIgb3IgbW9kdWxlLCBzdWNoIGFzIFVSTFNjYW4sIHJlc3RyaWN0cyBhY2Nlc3MgdG8gdGhlIGZpbGUuPC9saT4gPC91bD4gCiA8L2ZpZWxkc2V0PiAKPC9kaXY+IAo8ZGl2IGNsYXNzPSJjb250ZW50LWNvbnRhaW5lciI+IAogPGZpZWxkc2V0PjxoND5UaGluZ3MgeW91IGNhbiB0cnk6PC9oND4gCiAgPHVsPiAJPGxpPkNyZWF0ZSB0aGUgY29udGVudCBvbiB0aGUgV2ViIHNlcnZlci48L2xpPiAJPGxpPlJldmlldyB0aGUgYnJvd3NlciBVUkwuPC9saT4gCTxsaT5DaGVjayB0aGUgZmFpbGVkIHJlcXVlc3QgdHJhY2luZyBsb2cgYW5kIHNlZSB3aGljaCBtb2R1bGUgaXMgY2FsbGluZyBTZXRTdGF0dXMuIEZvciBtb3JlIGluZm9ybWF0aW9uLCBjbGljayA8YSBocmVmPSJodHRwOi8vZ28ubWljcm9zb2Z0LmNvbS9md2xpbmsvP0xpbmtJRD02NjQzOSI+aGVyZTwvYT4uIDwvbGk+IDwvdWw+IAogPC9maWVsZHNldD4gCjwvZGl2PiAKIAo8ZGl2IGNsYXNzPSJjb250ZW50LWNvbnRhaW5lciI+IAogPGZpZWxkc2V0PjxoND5EZXRhaWxlZCBFcnJvciBJbmZvcm1hdGlvbjo8L2g0PiAKICA8ZGl2IGlkPSJkZXRhaWxzLWxlZnQiPiAKICAgPHRhYmxlIGJvcmRlcj0iMCIgY2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIwIj4gCiAgICA8dHIgY2xhc3M9ImFsdCI+PHRoPk1vZHVsZTwvdGg+PHRkPiZuYnNwOyZuYnNwOyZuYnNwO0lJUyBXZWIgQ29yZTwvdGQ+PC90cj4gCiAgICA8dHI+PHRoPk5vdGlmaWNhdGlvbjwvdGg+PHRkPiZuYnNwOyZuYnNwOyZuYnNwO01hcFJlcXVlc3RIYW5kbGVyPC90ZD48L3RyPiAKICAgIDx0ciBjbGFzcz0iYWx0Ij48dGg+SGFuZGxlcjwvdGg+PHRkPiZuYnNwOyZuYnNwOyZuYnNwO1N0YXRpY0ZpbGU8L3RkPjwvdHI+IAogICAgPHRyPjx0aD5FcnJvciBDb2RlPC90aD48dGQ+Jm5ic3A7Jm5ic3A7Jm5ic3A7MHg4MDA3MDAwMjwvdGQ+PC90cj4gCiAgICAgCiAgIDwvdGFibGU+IAogIDwvZGl2PiAKICA8ZGl2IGlkPSJkZXRhaWxzLXJpZ2h0Ij4gCiAgIDx0YWJsZSBib3JkZXI9IjAiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCI+IAogICAgPHRyIGNsYXNzPSJhbHQiPjx0aD5SZXF1ZXN0ZWQgVVJMPC90aD48dGQ+Jm5ic3A7Jm5ic3A7Jm5ic3A7aHR0cDovL2xvY2FsaG9zdDo1MDA2NS9Vc2Vycy9Pcmdhbml6ZXIvbnVsbDwvdGQ+PC90cj4gCiAgICA8dHI+PHRoPlBoeXNpY2FsIFBhdGg8L3RoPjx0ZD4mbmJzcDsmbmJzcDsmbmJzcDtDOlxVc2Vyc1xEVllSQVxEZXNrdG9wXHJlZ2Vhc2VfcHJvalxSZWdFYXNlQmV0YXYxLjBcVXNlcnNcT3JnYW5pemVyXG51bGw8L3RkPjwvdHI+IAogICAgPHRyIGNsYXNzPSJhbHQiPjx0aD5Mb2dvbiBNZXRob2Q8L3RoPjx0ZD4mbmJzcDsmbmJzcDsmbmJzcDtBbm9ueW1vdXM8L3RkPjwvdHI+IAogICAgPHRyPjx0aD5Mb2dvbiBVc2VyPC90aD48dGQ+Jm5ic3A7Jm5ic3A7Jm5ic3A7QW5vbnltb3VzPC90ZD48L3RyPiAKICAgIDx0ciBjbGFzcz0iYWx0Ij48dGg+UmVxdWVzdCBUcmFjaW5nIERpcmVjdG9yeTwvdGg+PHRkPiZuYnNwOyZuYnNwOyZuYnNwO0M6XFVzZXJzXERWWVJBXERvY3VtZW50c1xJSVNFeHByZXNzXFRyYWNlTG9nRmlsZXNcUkVHRUFTRUJFVEFWMS4wPC90ZD48L3RyPiAKICAgPC90YWJsZT4gCiAgIDxkaXYgY2xhc3M9ImNsZWFyIj48L2Rpdj4gCiAgPC9kaXY+IAogPC9maWVsZHNldD4gCjwvZGl2PiAKIAo8ZGl2IGNsYXNzPSJjb250ZW50LWNvbnRhaW5lciI+IAogPGZpZWxkc2V0PjxoND5Nb3JlIEluZm9ybWF0aW9uOjwvaDQ+IAogIFRoaXMgZXJyb3IgbWVhbnMgdGhhdCB0aGUgZmlsZSBvciBkaXJlY3RvcnkgZG9lcyBub3QgZXhpc3Qgb24gdGhlIHNlcnZlci4gQ3JlYXRlIHRoZSBmaWxlIG9yIGRpcmVjdG9yeSBhbmQgdHJ5IHRoZSByZXF1ZXN0IGFnYWluLiAKICA8cD48YSBocmVmPSJodHRwczovL2dvLm1pY3Jvc29mdC5jb20vZndsaW5rLz9MaW5rSUQ9NjIyOTMmYW1wO0lJUzcwRXJyb3I9NDA0LDAsMHg4MDA3MDAwMiwxNzEzNCI+VmlldyBtb3JlIGluZm9ybWF0aW9uICZyYXF1bzs8L2E+PC9wPiAKICAgCiA8L2ZpZWxkc2V0PiAKPC9kaXY+IAo8L2Rpdj4gCjwvYm9keT4gCjwvaHRtbD4gCg==IHRoZSBmaWxlIG9yIGRpcmVjdG9yeSBhbmQgdHJ5IHRoZSByZXF1ZXN0IGFnYWluLiAKICA8cD48YSBocmVmPSJodHRwczovL2dvLm1pY3Jvc29mdC5jb20vZndsaW5rLz9MaW5rSUQ9NjIyOTMmYW1wO0lJUzcwRXJyb3I9NDA0LDAsMHg4MDA3MDAwMiwxNzEzNCI+VmlldyBtb3JlIGluZm9ybWF0aW9uICZyYXF1bzs8L2E+PC9wPiAKICAgCiA8L2ZpZWxkc2V0PiAKPC9kaXY+IAo8L2Rpdj4gCjwvYm9keT4gCjwvaHRtbD4gCg==IHRoZSBmaWxlIG9yIGRpcmVjdG9yeSBhbmQgdHJ5IHRoZSByZXF1ZXN0IGFnYWluLiAKICA8cD48YSBocmVmPSJodHRwczovL2dvLm1pY3Jvc29mdC5jb20vZndsaW5rLz9MaW5rSUQ9NjIyOTMmYW1wO0lJUzcwRXJyb3I9NDA0LDAsMHg4MDA3MDAwMiwxNzEzNCI+VmlldyBtb3JlIGluZm9ybWF0aW9uICZyYXF1bzs8L2E+PC9wPiAKICAgCiA8L2ZpZWxkc2V0PiAKPC9kaXY+IAo8L2Rpdj4gCjwvYm9keT4gCjwvaHRtbD4gCg==

标签: c#asp.netajaxbase64webmethod

解决方案


我真的不知道我正在尝试转换 html :D 感谢@john 和 @Access Denied 指出错误。
我非常感谢你的帮助:)

这是我用于转换图像的js脚本..

function readFile() {

    if (this.files && this.files[0]) {

        var FR = new FileReader();

        FR.addEventListener("load", function (e) {
            sessionStorage.setItem("imagebase64", e.target.result);
        });

        FR.readAsDataURL(this.files[0]);
    }

}

document.getElementById("test").addEventListener("change", readFile);

推荐阅读