asp.net js 将图片转成base64后传到服务器端,报错;The input is not a valid Base-64 string....
asp.net mvc ,客户端js将图片专程base64后去掉data:image/jpeg;base64,传到后台服务端,报错ERROR - mine_UpLoadImg
System.FormatException: The input is not a valid Base-64 string as it contains a non-base 64 character, more than two padding characters....。请大神帮忙解决。
客户端js:
mui('body').on('change', '.upload-img', function () {
//mui.alert('1');
var data = this.getAttribute('data'),//正面还是反面
imgDom = document.getElementById(data + 'Box'),//图片容器节点
imgIconDom = document.getElementById(data + 'Icon'),//加号dom节点
reader, imgBase64Data, file, filesize, picquality,
filter = /^image\/jpeg$/i;
file = this.files[0];
filesize = parseInt((file.size) / 1024); //计算图片大小,默认是B,转换成KB
//mui.alert('1');
if (typeof FileReader === 'undefined') {
mui.toast('您的浏览器不支持上传图片');
return false;
}
if (!filter.test(file.type)) {
mui.toast('仅支持上传格式为jpg的图片');
return false;
}
var userId = JSON.parse(localStorage.getItem("user")).UserId;
var pp = $('#hd_picpath').val();
loadingMask();
if (filesize <= 200) {
picquality = 1;
}
else if (filesize > 200 && filesize <= 2048) {
picquality = 0.9;
} else if (filesize > 2048 && filesize <= 4096) {
picquality = 0.8;
} else if (filesize > 2048 && filesize <= 5120) {
picquality = 0.7;
} else if (filesize > 5120 && filesize <= 7168) {
picquality = 0.6;
} else if (filesize > 7168 && filesize <= 9216) {
picquality = 0.5;
} else {
picquality = 0.3;
}
reader = new FileReader();
reader.readAsDataURL(file);
reader.onload = function (event) {
var img = new Image(),
width = 640, //图片resize宽度
quality = picquality, //图像质量
canvas = document.createElement("canvas"),
drawer = canvas.getContext("2d");
imgBase64Data = event.target.result;
//mui.alert('4');
img.src = event.target.result;
img.onload = function () {
//mui.alert('5');
var orientation = null,degree;
EXIF.getData(this, function() {
orientation = EXIF.getTag(this, 'Orientation');
if (img.width > width) {
canvas.width = width;
canvas.height = width * (img.height / img.width);
} else {
canvas.width = img.width;
canvas.height = img.height;
}
if (orientation === 6) {
canvas.width = img.height;
canvas.height = img.width;
degree = 90 * Math.PI / 180;
drawer.rotate(degree);
drawer.drawImage(img, 0, -img.height);
} else {
drawer.drawImage(img, 0, 0, canvas.width, canvas.height);
}
//drawer.drawImage(img, 0, 0, canvas.width, canvas.height);
imgBase64Data = canvas.toDataURL("image/jpeg", quality).replace("data:image/jpeg;base64,", "");
//mui.alert('6');
/*在这里调用上传接口*/
$.post('/Mine/UpLoadImg', { 'imgData': imgBase64Data, 'imgType': data, 'UserId': userId }, function(obj) {
服务端: public string UpLoadImg(string imgData,string imgType,string UserId)
{
string result = "";
try
{
string f2 = DateTime.Now.ToString("yyyyMMdd");
string currfile = Config.PicPath + f2+"/";
string path = HttpContext.Server.MapPath("~") + currfile;
Random nd = new Random();
string filename = BllMine.GetPicName(nd);
//string pf = "/" + currfile;
if (!Directory.Exists(path))
{
Directory.CreateDirectory(path);
}
if (!string.IsNullOrEmpty(imgData))
{
//string[] str = imgData.Split(',');
//byte[] image = Convert.FromBase64String(str[1]);
var metadataStart = imgData.IndexOf("data:image/png;base64,");
if (metadataStart!=-1)
{
var len = imgData.Length - 22;
imgData = imgData.Substring(metadataStart + 22, len);
}
byte[] image = Convert.FromBase64String(imgData);
string fileid = BllMine.UpLoadImg(image, imgType, filename, UserId);
System.IO.File.WriteAllBytes(path + filename, image);
result = JsonConvert.SerializeObject(new { status = "ok", data = f2 + "/" + filename, data2 = fileid });
//result = JsonConvert.SerializeObject(new { status = "ok", data = filename });
}
}