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:\Users\JUNON37\Desktop\Pictures\123", 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;
        }

這樣就好了

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM