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.............." this

該字符串的第一部分"data:image/png;base64" 是表明該Base64字符串對應的原始類型,第二部分是該文件生成的內容spa

2.在C#語言的後臺 咱們直接獲取該字符串,並對其分割轉化爲圖片,注意如不分割 FromBase64String 方法會報錯,提示輸入的不是有效的 Base-64 字符串,由於它包含非 Base-64 字符、兩個以上的填充字符,或者填充字符間包含非法字符。因此咱們只取第二部分的內容出來轉化就行了,由於第一部分包含着文件格式code

 

 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;
        }

這樣就行了blog

相關文章
相關標籤/搜索