webapi上传图片的两种方式
/// <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上传图片的两种方式的更多相关文章
- .Net Core WebApi上传图片的两种方式
我这边主要是为了上传图片,话不多说,上代码. 方式一:通过Form表单上传 后端: /// <summary> /// 上传图片,通过Form表单提交 /// </summary&g ...
- Android上传图片的两种方式
参考:https://www.jianshu.com/p/f47943880cea
- python利用mongodb上传图片数据 : GridFS 与 bson两种方式
利用mongodb保存图片通常有两种方法,一种是将图片数据转化为二进制作为字典的键值对进行保存,另一种是利用mongodb提供的GridFS进行保存,两者各有利弊.性能方面的优劣未曾测试,无法进行评价 ...
- 在基于MVC的Web项目中使用Web API和直接连接两种方式混合式接入
在我之前介绍的混合式开发框架中,其界面是基于Winform的实现方式,后台使用Web API.WCF服务以及直接连接数据库的几种方式混合式接入,在Web项目中我们也可以采用这种方式实现混合式的接入方式 ...
- 《连载 | 物联网框架ServerSuperIO教程》- 10.持续传输大块数据流的两种方式(如:文件)
1.C#跨平台物联网通讯框架ServerSuperIO(SSIO)介绍 <连载 | 物联网框架ServerSuperIO教程>1.4种通讯模式机制. <连载 | 物联网框架Serve ...
- System.Web.Http.Cors配置跨域访问的两种方式
System.Web.Http.Cors配置跨域访问的两种方式 使用System.Web.Http.Cors配置跨域访问,众多大神已经发布了很多文章,我就不在详细描述了,作为小白我只说一下自己的使用心 ...
- PHP-mysql存储照片的两种方式
PHP-mysql存储照片的两种方式 方式一:把图片数据存储在数据库中(二进制) 数据库代码: CREATE TABLE `photo` ( `id` int(10) unsigned NOT ...
- Struts2实现ajax的两种方式
基于Struts2框架下实现Ajax有两种方式,第一种是原声的方式,另外一种是struts2自带的一个插件. js部分调用方式是一样的: JS代码: function testAjax() { var ...
- CSharpGL(18)分别处理glDrawArrays()和glDrawElements()两种方式下的拾取(ColorCodedPicking)
CSharpGL(18)分别处理glDrawArrays()和glDrawElements()两种方式下的拾取(ColorCodedPicking) 我在(Modern OpenGL用Shader拾取 ...
随机推荐
- C语言学习笔记之输出缓冲
在c语言中经常用到输出函数printf,当我们像往常一样在输出函数中输入我们的想要的输出的东西后加\n换行 验证结果如我们输出的一样 如果我们在后面加入死循环会不会出现这些语句呢 结果卡死了,可还是输 ...
- SpringCloud微服务:基于Nacos组件,整合Dubbo框架
源码地址:GitHub·点这里 || GitEE·点这里 一.基础组件简介 1.Dubbo框架 Dubbo服务化治理的核心框架,之前几年在国内被广泛使用,后续由于微服务的架构的崛起,更多的公司转向微服 ...
- CentOS7安装MinIO教程,并在C#客户端WPF中实现监控上传进度
MinIO的详细介绍可以参考官网(https://min.io/product/overview). 简单来说它是一个实现了AWS S3标准的100%开源的,可商用的( Apache V2 licen ...
- QT QJson与QByteArray的转化
目录 QJsonObject转为QByteArray QByteArray转为QJsonObject 可以将QJsonObject与QByteArray互相转化,以便网络编程时客户端与服务器之间的通信 ...
- TCP/IP速记
目录 网络协议 OSI七层模型和TCP/IP五层模型 TCP/IP五层模型 TCP的三次握手和四次挥手 三次握手进行连接 四次挥手断开连接 TCP连接的特点 TCP是如何保证安全可靠的 UDP连接的特 ...
- Vercel托管博客
背景 本站已托管至Vercel,但作为一名前端小白,昨天帮朋友托管博客到Vercel的过程中到处碰壁,就想写一篇博客记录一下. 注册登录 点击Vercel官网{% btn 'https://verce ...
- 解决AndroidStudio 模拟器无网络连接
更新 注意 Win10 要在cmd下打开, 也就是地址栏打cmd能成功 转载地址 https://blog.csdn.net/Bibifeng/article/details/81317037 最近写 ...
- js利用canvas绘制爱心
js代码如下: var cav = document.getElementById("a").getContext("2d"); function draw(x ...
- dota2输入法无候选框?
win10自带的微软拼音在dota2中不会显示候选框,或者说是选词框. 这种情况下只能选择其他输入法. 我选择的是搜狗输入法(此随笔添加时的最新版),在dota2中有选词框. 网上有些人说要改兼容性, ...
- 性能测试必备知识(10)- Linux 是怎么管理内存的?
做性能测试的必备知识系列,可以看下面链接的文章哦 https://www.cnblogs.com/poloyy/category/1806772.html 内存映射 日常生活常说的内存是什么 比方说, ...