#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. Ubuntu编译安装最新的webkit

    好久都没更新webkit 源码在ubuntu上编译了,网上搜了一下,基本上都是早期编译的webkit版本.可能是大家都去搞高大上的谷歌浏览器了吧. 今天就以ubuntu14.04版本作为编译环境来讲讲 ...

  2. Algolia使用教程 , 超详细傻子看都会

    框架描述 发现网上Algolia这块的资料较少,就花了点时间从官网上整理了下,总结了几项常用的功能用法. 现在比较有名的Algolia提供了云搜索的服务.具体办法是我们将数据库的信息以JSON的格式上 ...

  3. IP白名单添加了当前IP,获取access_token时依然报出错误码40164的坑

    开发公众号网页时,想要调用微信API接口,令人无奈的是,想要调用各接口都需使用access_token,于是,获取access_token的征途开始了…… 1.开发者基本配置 (1) 公众平台官网登录 ...

  4. .6-浅析webpack源码之validateSchema模块

    validateSchema模块 首先来看错误检测: const webpackOptionsValidationErrors = validateSchema(webpackOptionsSchem ...

  5. [转]Angular CLI 安装和使用

    本文转自:https://www.jianshu.com/p/327d88284abb 一. 背景介绍: 两个概念: 关于Angular版本,Angular官方已经统一命名Angular 1.x统称为 ...

  6. 《深入理解Java虚拟机》(一)Java虚拟机发展史

    Java虚拟机发展史 1.Sun Classic/Exact VM 1.Sun Classic:世界第一款商用Java虚拟机. 2.Exact VM:准确式GC:虚拟机可以知道内存中的某个位置的数据具 ...

  7. swift 基础小结02 -- VFL约束、属性的get和set方法、懒加载、方法替换

    一.属性的get和set方法          1.自定义属性的set和get方法          private(set) var _image:UIImage?     //自定义属性get,s ...

  8. idea创建maven项目速度慢?别急,这有三种方案

    困扰 Intellij idea是一款非常强大的编辑器,可以很方便地帮我们创建maven项目,有用过的同学应该都深有体会,但我们经常会遇到一个困扰,那就是用idea创建maven项目时,速度很慢,往往 ...

  9. oracle创建用户、授权、导入、导出命令总结

    1.创建用户 需要先用system用户登录数据库,因为system用户具有创建其他用户的权限. 语法[创建用户]: create user 用户名 identified by 口令[即密码]: 例子: ...

  10. 第一篇 Spring boot 配置文件笔记

    spring boot 不需要配置太多文件程序便可正常运行,特殊情况需要我们自己配置文件. 项目以IDEA写实例,系统会默认在src/main/java/resources目录下创建applicati ...