#region 配合前端的多张图片上传
#region 上传图片方法
/// <summary>
/// 接口方法
/// </summary>
/// <param name="img">带 data:image/jpeg;base64,的base64的图片</param>
/// <returns>图片路径</returns>
[HttpPost]
public ActionResult GETaddimg2(String img)
{
if (img == null)
{
return Json("空");
}
else
{
return Json(PDUploadImage(img), JsonRequestBehavior.AllowGet);
}
}
#endregion
#region 图片转化
/// <summary>
/// base64 的字符串
/// </summary>
/// <param name="img"></param>
/// <returns>图片转成32的名字</returns>
public JsonResult PDUploadImage(string img)
{
string error = "";
return Json(SaveImage("/Upload/Article", img, ref error), JsonRequestBehavior.AllowGet);
}
#endregion
#region 截取data:image/jpeg;base64,提取图片,并保存图片
/// <summary>
/// 截取data:image/jpeg;base64,提取图片,并保存图片
/// </summary>
/// <param name="file_name"></param>
/// <param name="img_string">base64的字符串</param>
/// <param name="error">错误的图片格式</param>
/// <returns>路径 + 图片的名称</returns>
private string SaveImage(string file_name, string img_string, ref string error)
{
//try
//{
string[] img_array = img_string.Split(',');
byte[] arr = Convert.FromBase64String(img_array[]);
using (MemoryStream ms = new MemoryStream(arr))
{
Bitmap bmp = new Bitmap(ms);
if (img_array[].ToLower() == "data:image/jpeg;base64")
{
bmp.Save(file_name + ".jpg");
return SetImg(Guid.NewGuid().ToString().Replace('-', 'p').Substring(), "jpg", arr);
}
else if (img_array[].ToLower() == "data:image/png;base64")
{
bmp.Save(file_name + ".png");
return SetImg(Guid.NewGuid().ToString().Replace('-', 'p').Substring(), "png", arr);
}
else if (img_array[].ToLower() == "data:image/gif;base64")
{
bmp.Save(file_name + ".gif");
return SetImg(Guid.NewGuid().ToString().Replace('-', 'p').Substring(), "gif", arr);
}
else
{
error = "不支持该文件格式。";
return "错";
}
}
//}
//catch (Exception ex)
//{
// error = "生成图片发生错误。" + ex.ToString();
// return "错";
//}
}
#endregion
#region 保存图片路径及设置名称
/// <summary>
/// 保存到文件路径
/// </summary>
/// <param name="ImgName">保存的文件名称</param>
/// <param name="suffix">后缀名</param>
/// <param name="arr">base64</param>
/// <returns>图片的路径</returns>
public string SetImg(string ImgName, string suffix, byte[] arr)
{
string str3 = System.AppDomain.CurrentDomain.BaseDirectory;//找到相对路径
string str4 = System.AppDomain.CurrentDomain.SetupInformation.ApplicationBase;//找到相对路径
System.IO.File.WriteAllBytes(str3 + "/Upload/Article/" + ImgName + "." + suffix + "", arr);
return "/Upload/Article/" + ImgName + "." + suffix + "";
}
#endregion
#endregion

.NET MVC 后台接受base64的上传图片的更多相关文章

  1. EF+LINQ事物处理 C# 使用NLog记录日志入门操作 ASP.NET MVC多语言 仿微软网站效果(转) 详解C#特性和反射(一) c# API接受图片文件以Base64格式上传图片 .NET读取json数据并绑定到对象

    EF+LINQ事物处理   在使用EF的情况下,怎么进行事务的处理,来减少数据操作时的失误,比如重复插入数据等等这些问题,这都是经常会遇到的一些问题 但是如果是我有多个站点,然后存在同类型的角色去操作 ...

  2. from表单中checkbox的多选,ajax转入后台,后台接受

    var check = [];//定义一个空数组 $("input[name='category']:checked").each(function(i){//把所有被选中的复选框 ...

  3. jsp与spring mvc后台controller间参数传递处理之总结

    在编程过程中,最容易出现问题及卡壳的地方,往往是各层之间接缝处,接缝处往往存在着各种各样的参数传递,数据转换和格式化,参数很好的传递并正确接收过来之后就是复杂逻辑之间的处理了,所以为了避免多种问题占用 ...

  4. MVC -- 后台RedirectToAction传递实体类与字符串

    1.MVC -- 后台RedirectToAction传递实体类 RedirectToAction(控制器,控制器方法,实体类) 2.MVC -- 后台RedirectToAction传递字符串 Re ...

  5. MVC后台传dt数据

    //MVC后台传dt数据 public JsonResult TeacherVoteInfo([FromBody]Teacher_VoteModel model) { string tname = m ...

  6. 后台接受ajax传递值的实例代码

    后台接受ajax传递值的实例代码: 使用ajax可以实现无刷新数据交互,下面是一段后台代码接收ajax传递值的实例代码供需要的朋友参考,希望能够带来帮助. ajax代码如下: $(function ( ...

  7. ASP.NET MVC 后台接收集合参数和 jquery ajax 传值

    MVC 接收参数数组(集合)   示例样本:   public class Person {      public string FirstName { get; set; }      publi ...

  8. 序列化json对象,通过ajax传入asp.net mvc后台

    序列化json对象,通过ajax传入asp.net mvc后台 序列化json对象,通过ajax传入asp.net mvc后台   今天遇到一个问题,准备把组织好的json对象通过jquery.aja ...

  9. Asp.net Core + EF Core + Bootstrap搭建的MVC后台通用管理系统模板(跨平台版本)

    Asp.net Core + EF Core + Bootstrap搭建的MVC后台通用管理系统模板(跨平台版本) 原创 2016年07月22日 10:33:51 23125 6月随着.NET COR ...

随机推荐

  1. k8s全栈监控之metrics-server和prometheus

    一.概述 使用metric-server收集数据给k8s集群内使用,如kubectl,hpa,scheduler等 使用prometheus-operator部署prometheus,存储监控数据 使 ...

  2. CentOS 7 开启 SNMP 实现服务器性能监控

    1.检测是否有 SNMP 服务 service snmpd status 2.若没有则安装 yum install -y net-snmp 3.编辑 SNMP 的配置文件,设置安全的验证方式 vi / ...

  3. oracle与mysql

    『创业团队最佳选择是Oracle+MongoDB,而不是MySQL』,当深蓝在QQ群里抛出这样的观点的时候,就像是在马蜂窝里丢了一串鞭炮一样热闹起来. 创业者甲: 开什么玩笑,Oracle要收钱的,太 ...

  4. Java学习笔记之——变量与数据类型、运算符

    一.变量 1.变量:变化的值 变量在代码运行期间,开辟了一块空间 .这块空间是有地址的,给这块取了个名字, 这个名字就叫做变量名,这块空间放的东西叫做变量值 2.变量的初始化: (1)先声明再赋值: ...

  5. 基于Zookeeper的分布式锁

    实现分布式锁目前有三种流行方案,分别为基于数据库.Redis.Zookeeper的方案,其中前两种方案网络上有很多资料可以参考,本文不做展开.我们来看下使用Zookeeper如何实现分布式锁. 什么是 ...

  6. html页面边框的另一种写法

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  7. webpack4 系列教程(九): CSS Tree Shaking

    教程所示图片使用的是 github 仓库图片,网速过慢的朋友请移步原文地址 有空就来看看个人技术小站, 我一直都在 0. 课程介绍和资料 本次课程的代码目录(如下图所示): >>> ...

  8. 大型Vuex应用程序的目录结构

    译者按: 听前端大佬聊聊Vuex大型项目架构的经验 原文: Large-scale Vuex application structures 译者: Fundebug 为了保证可读性,本文采用意译而非直 ...

  9. HappenBefore

    计算机芯片在操作指令的步骤: 1.获取指令 2.指令进行解码 3.去寄存器里取值 4.开始计算结果(操作) 5.将结果写会到寄存器中 执行代码的顺序可能与编写代码不一致,及虚拟机优化代码顺序,则为指令 ...

  10. 14-补充内容:MySQl创建用户和授权

    [转]14-补充内容:MySQl创建用户和授权 权限管理 我们知道我们的最高权限管理者是root用户,它拥有着最高的权限操作.包括select.update.delete.update.grant等操 ...