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