/// <summary>
        /// App上传图片
        /// </summary>
        /// <returns>返回上传图片的相对路径</returns>
        [HttpPost]
        public AppReturn<string> UploadImage()
        {
            AppReturn<string> rModel = new AppReturn<string>();
            //string result = "";
            // 检查是否是 multipart/form-data
            if (!Request.Content.IsMimeMultipartContent("form-data"))
            {
                InvestmentCommon.Log4NetHelper.Log.Error("不是有效的'form-data'类型");
                rModel.state = 0;
                rModel.msg = "不是有效的'form-data'类型";
                return rModel;
            }

DateTime dt = DateTime.Now;
            string path = string.Format("/imagestore/{0}/{1}{2}", dt.Year, dt.Month.ToString().PadLeft(2, '0'), dt.Day.ToString().PadLeft(2, '0'));
            string abtPath = HttpContext.Current.Server.MapPath(path);
            if (!InvestmentCommon.FileHelper.CreateDirectory(abtPath))
            {
                InvestmentCommon.Log4NetHelper.Log.Error(string.Format("创建目录{0}失败", abtPath));
                rModel.state = 0;
                rModel.msg = "创建图片目录失败";
                return rModel;
            }

string fileName = "";
            string ext = "";
            string filePath = "";
            try
            {
                HttpContextBase context = (HttpContextBase)Request.Properties["MS_HttpContext"];//获取传统context
                HttpRequestBase request = context.Request;//定义传统request对象
                HttpFileCollectionBase imgFiles = request.Files;
                for (int i = 0; i < imgFiles.Count; i++)
                {
                    ext = InvestmentCommon.FileHelper.GetExtention(imgFiles[i].FileName);
                    fileName = string.Format("{0}{1}", System.Guid.NewGuid().ToString(), ext);
                    filePath = string.Format("{0}/{1}", path, fileName);
                    imgFiles[i].SaveAs(abtPath + "\\" + fileName);
                    imgFiles[i].InputStream.Position = 0;
                    rModel.data = filePath.Replace("/", "");
                    rModel.state = 1;
                    rModel.msg = "success";
                }

}
            catch (Exception e)
            {
                InvestmentCommon.Log4NetHelper.Log.Error("图片保存失败");
                rModel.state = 0;
                rModel.msg = "图片保存失败";
                return rModel;
            }

//result = Newtonsoft.Json.JsonConvert.SerializeObject(rList);
            return rModel;
        }

/// <summary>
        /// App上传图片
        /// </summary>
        /// <returns>返回上传图片的相对路径</returns>
        [HttpPost]
        public AppReturn<string> UploadImageByBase64(FileUp file)
        {
            AppReturn<string> rModel = new AppReturn<string>();
            if (string.IsNullOrEmpty(file.FileBase64))
            {
                InvestmentCommon.Log4NetHelper.Log.Error("没有选择要上传的图片");
                rModel.state = 0;
                rModel.msg = "没有选择要上传的图片";
                return rModel;
            }
            DateTime dt = DateTime.Now;
            string path = string.Format("/imagestore/{0}/{1}{2}", dt.Year, dt.Month.ToString().PadLeft(2, '0'), dt.Day.ToString().PadLeft(2, '0'));
            string abtPath = HttpContext.Current.Server.MapPath(path);
            if (!InvestmentCommon.FileHelper.CreateDirectory(abtPath))
            {
                InvestmentCommon.Log4NetHelper.Log.Error(string.Format("创建目录{0}失败", abtPath));
                rModel.state = 0;
                rModel.msg = "创建图片目录失败";
                return rModel;
            }

string fileName = "";
            string filePath = "";
            try
            {
                byte[] imgByte = Convert.FromBase64String(file.FileBase64);
                MemoryStream ms = new MemoryStream(imgByte);
                Image image = System.Drawing.Image.FromStream(ms);
                fileName = string.Format("{0}.png", System.Guid.NewGuid().ToString());
                filePath = string.Format("{0}/{1}", path, fileName);
                image.Save(abtPath + "\\" + fileName);
                rModel.data = filePath.Replace("/", "");
                rModel.state = 1;
                rModel.msg = "success";
                ms.Close();
                ms.Dispose();               
            }
            catch (Exception e)
            {
                InvestmentCommon.Log4NetHelper.Log.Error("图片保存失败");
                rModel.state = 0;
                rModel.msg = "图片保存失败";
                return rModel;
            }

return rModel;
        }

webapi上传图片的两种方式的更多相关文章

  1. .Net Core WebApi上传图片的两种方式

    我这边主要是为了上传图片,话不多说,上代码. 方式一:通过Form表单上传 后端: /// <summary> /// 上传图片,通过Form表单提交 /// </summary&g ...

  2. Android上传图片的两种方式

    参考:https://www.jianshu.com/p/f47943880cea

  3. python利用mongodb上传图片数据 : GridFS 与 bson两种方式

    利用mongodb保存图片通常有两种方法,一种是将图片数据转化为二进制作为字典的键值对进行保存,另一种是利用mongodb提供的GridFS进行保存,两者各有利弊.性能方面的优劣未曾测试,无法进行评价 ...

  4. 在基于MVC的Web项目中使用Web API和直接连接两种方式混合式接入

    在我之前介绍的混合式开发框架中,其界面是基于Winform的实现方式,后台使用Web API.WCF服务以及直接连接数据库的几种方式混合式接入,在Web项目中我们也可以采用这种方式实现混合式的接入方式 ...

  5. 《连载 | 物联网框架ServerSuperIO教程》- 10.持续传输大块数据流的两种方式(如:文件)

    1.C#跨平台物联网通讯框架ServerSuperIO(SSIO)介绍 <连载 | 物联网框架ServerSuperIO教程>1.4种通讯模式机制. <连载 | 物联网框架Serve ...

  6. System.Web.Http.Cors配置跨域访问的两种方式

    System.Web.Http.Cors配置跨域访问的两种方式 使用System.Web.Http.Cors配置跨域访问,众多大神已经发布了很多文章,我就不在详细描述了,作为小白我只说一下自己的使用心 ...

  7. PHP-mysql存储照片的两种方式

    PHP-mysql存储照片的两种方式 方式一:把图片数据存储在数据库中(二进制) 数据库代码: CREATE TABLE `photo` (    `id` int(10) unsigned NOT ...

  8. Struts2实现ajax的两种方式

    基于Struts2框架下实现Ajax有两种方式,第一种是原声的方式,另外一种是struts2自带的一个插件. js部分调用方式是一样的: JS代码: function testAjax() { var ...

  9. CSharpGL(18)分别处理glDrawArrays()和glDrawElements()两种方式下的拾取(ColorCodedPicking)

    CSharpGL(18)分别处理glDrawArrays()和glDrawElements()两种方式下的拾取(ColorCodedPicking) 我在(Modern OpenGL用Shader拾取 ...

随机推荐

  1. spring data jap的使用 1

    最近一直在研究Spring Boot,今天为大家介绍下Spring Data JPA在Spring Boot中的应用,如有错误,欢迎大家指正. 先解释下什么是JPA JPA就是一个基于O/R映射的标准 ...

  2. 从零搭建Spring Boot脚手架(2):增加通用的功能

    1. 前言 今天开始搭建我们的kono Spring Boot脚手架,首先会集成Spring MVC并进行定制化以满足日常开发的需要,我们先做一些刚性的需求定制,后续再补充细节.如果你看了本文有什么问 ...

  3. 【模式识别与机器学习】——SVM举例

  4. Linux探测工具BCC(网络)

    Linux探测工具BCC(网络) 承接上文,本节以ICMP和TCP为例介绍与网络相关的部分内容. 目录 Linux探测工具BCC(网络) Icmp的探测 TCP的探测 Icmp的探测 首先看下促使我学 ...

  5. JS学习第八天

    DOM访问列表框.下拉菜单的常用属性: form返回列表框.下拉菜单所在的表单对象; length返回列表框.下拉菜单的选项个数; options返回列表框.下拉菜单里所有选项组成的数组; defau ...

  6. Linux学习日志——基本指令②

    文章目录 Linux学习日志--基本指令② 前言 touch cp (copy) mv (move) rm vim 输出重定向(> 或 >>) cat df(disk free) f ...

  7. ansibleAPI怎么做异步

    在直接使用 ansible 时候有-B -p 参数可以启用异步操作,然后返回一个 job_id 值 [root@master ansible]# ansible node1 -B -P -m yum ...

  8. Jdk1.7下的HashMap源码分析

    本文主要讨论jdk1.7下hashMap的源码实现,其中主要是在扩容时容易出现死循环的问题,以及put元素的整个过程. 1.数组结构 数组+链表 示例图如下: 常量属性 /** * The defau ...

  9. 免费API接口记录

    用来记录一些无次数限制的免费API接口,主要是聚合数据上和API Store上的一些,还有一些其他的. 手机号码归属地API接口: https://www.juhe.cn/docs/api/id/11 ...

  10. RocketMQ在windows环境下的安装(转)

    原博地址:https://www.jianshu.com/p/4a275e779afa 一.预备环境 1.系统 Windows 2. 环境 JDK1.8.Maven.Git 二. RocketMQ部署 ...