Base64 格式的多个图片 转 普通路径格式

question.Image 格式: “data:image/jpg;base64,编码,data:image/jpg;base64,编码,data:image/jpg;base64,编码,”



int index = question.Image.IndexOf("data:image/");

string[] sArray = Regex.Split(question.Image, "data:image/", RegexOptions.IgnoreCase);//1.分割出图片格式以及对应的base64图片编码
for (int i = 0; i < sArray.Length; i++)
{
if (!string.IsNullOrEmpty(sArray[i]))
{
int indexCurrent = sArray[i].IndexOf(";base64,");
int headIndexCurrent = indexCurrent + 8; //2.截取base64开始位置
int currentStrLength = sArray[i].Length;//3.包含类型的base64总长度
int subStrEndLength = 0;
//4.去掉base64末尾,(逗号)
if (i == sArray.Length-1 )
{
subStrEndLength = currentStrLength- headIndexCurrent;
}
else
{
subStrEndLength = currentStrLength- headIndexCurrent-1;
}
var type = sArray[i].Substring(0, indexCurrent);//5.获取图片类型
var base64 = sArray[i].Substring(headIndexCurrent, subStrEndLength);//6.获取base64
byte[] bt = Convert.FromBase64String(base64);//7.将base64转换成字节数组
System.IO.MemoryStream stream = new System.IO.MemoryStream(bt);//转成文件流
var result = saveFiles(stream, type);
if (result.Status == 0)
{

ImageUrl += result.Msg+",";
}
else
{
return Json(result);
}
}

}



ResultDto 类

 public class ResultDto
    {
        public ResultDto() {
            this.Status = 0;
            this.Msg = string.Empty;
            this.Title = string.Empty;
        }
        /// <summary>
        /// 状态
        /// </summary>
        public int Status { get; set; }
        /// <summary>
        /// 返回信息
        /// </summary>
        public string Msg { get; set; }
        /// <summary>
        /// 搜索内容
        /// </summary>
        public string Title { get; set; } 
    }


//saveFiles方法

 Func<Stream, string, ResultDto> saveFiles = (s, type) =>
                 {
                     var result = new ResultDto();
                     Bitmap bitmap = new Bitmap(s);


                     //bitmap;
                     //System.IO.FileInfo file = new System.IO.FileInfo(filedata.LocalFileName);
                     type = type.Replace(".", string.Empty);
                     string basedir = "/UploadFile/" + DateTime.Now.ToString("yyyy-MM-dd") + "/";
                     string path = System.Web.HttpContext.Current.Server.MapPath(basedir);


                     var Uploadconfig = System.Configuration.ConfigurationManager.AppSettings["UploadFile"];
                     if (string.IsNullOrEmpty(Uploadconfig))
                     {
                         throw new Exception(" Need Setting UploadFile");
                         result.Status = -1;
                         result.Msg = "Need Setting UploadFile";
                         return result;


                     }
                     path = Uploadconfig + "/UploadFile/" + DateTime.Now.ToString("yyyy-MM-dd") + "/";
                     if (!System.IO.Directory.Exists(path))
                     {
                         System.IO.Directory.CreateDirectory(path);
                     }
                     string fileName = "." + type;
                     if (fileName != ".jpg" &&
                         fileName != ".png" &&
                         fileName != ".bmp" &&
                         fileName != ".gif" &&
                         fileName != ".jpeg"
                         )
                     {
                         result.Status = -1;
                         result.Msg = "图片格式错误";
                         return result;
                         //throw new InvalidOperationException("图片格式错误");
                     }


                     if (bitmap.Size.Height * bitmap.Size.Width >= 1024 * 1024 * 3)
                     {
                         result.Status = -1;
                         result.Msg = "图片大小太大,请上传小图";
                         return result;
                         //return Json(resultDto, JsonRequestBehavior.AllowGet);
                         //throw new InvalidOperationException("图片大小太大,请上传小图!");
                     }


                     fileName = Guid.NewGuid().ToString("D") + fileName;
                     bitmap.Save(Path.Combine(path, fileName));
                     result.Msg = basedir + fileName;
                     result.Status = 0;
                     return result;
                 };


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值