zoukankan      html  css  js  c++  java
  • FromBase64String 输入的不是有效的 Base-64 字符串,因为它包含非 Base-64 字符、两个以上的填充字符,或者填充字符间包含非法字符

    js前台:

     <input id="upload_img_input" v-on:change="onFileChange" type="file"  multiple/>
    
    
    onFileChange(e) {
                    var files = e.target.files || e.dataTransfer.files;
                    if (!files.length)return; 
                    this.createImage(files);
                },
                createImage(file) {
                    if(typeof FileReader==='undefined'){
                        alert('您的浏览器不支持图片上传,请升级您的浏览器');
                        return false;
                    }
                    var image = new Image();         
                    var vm = this;
                    var leng=file.length;
                    for(var i=0;i<leng;i++){
                        var reader = new FileReader();
                        reader.readAsDataURL(file[i]); 
                        reader.onload =function(e){
                            vm.images=e.target.result;                                    
                        };                 
                    }                        
                }

    1.上面代码将图片生成base64的字符串,该字符串以分号切割 例如这样的格式 "data:image/png;base64,iVBORw0KGgo.............." 

    该字符串的第一部分"data:image/png;base64" 是代表该Base64字符串对应的原始类型,第二部分是该文件生成的内容

    2.在C#语言的后台 我们直接获取该字符串,并对其分割转化为图片,注意如不分割 FromBase64String 方法会报错,提示输入的不是有效的 Base-64 字符串,因为它包含非 Base-64 字符、两个以上的填充字符,或者填充字符间包含非法字符。所以我们只取第二部分的内容出来转化就好了,因为第一部分包含着文件格式

     public JsonResult PDUploadImage(string img)
            {
                string error = "";
                SaveImage(@"C:UsersJUNON37DesktopPictures123", img, ref error);
                return Json("", JsonRequestBehavior.AllowGet);
            }
    private bool SaveImage(string file_name, string img_string, ref string error)
           {
                try
                {
                    string[] img_array = img_string.Split(',');
                    byte[] arr = Convert.FromBase64String(img_array[1]);
                    using (MemoryStream ms = new MemoryStream(arr))
                    {
                        Bitmap bmp = new Bitmap(ms);
                        if (img_array[0].ToLower() == "data:image/jpeg;base64")
                        {
                            bmp.Save(file_name + ".jpg");
                        }
                        else if (img_array[0].ToLower() == "data:image/png;base64")
                        {
                            bmp.Save(file_name + ".png");
                        }
                        else
                        {
                            error = "不支持该文件格式。";
                            return false;
                        }
    
                    }
                }
                catch (Exception ex)
                {
                    error = "生成图片发生错误。" + ex.ToString();
                    return false;
                }
                return true;
            }

    这样就好了

  • 相关阅读:
    Path Sum II
    Convert Sorted Array to Binary Search Tree
    Construct Binary Tree from Inorder and Postorder Traversal
    Construct Binary Tree from Preorder and Inorder Traversal
    Maximum Depth of Binary Tree
    Binary Tree Zigzag Level Order Traversal
    Binary Tree Level Order Traversal
    Same Tree
    Validate Binary Search Tree
    Binary Tree Inorder Traversal
  • 原文地址:https://www.cnblogs.com/lixipeng/p/7380618.html
Copyright © 2011-2022 走看看