WebApi接口接收Base64图片
方法一:
using System; using System.Collections.Generic; using System.Drawing; using System.IO; using System.Linq; using System.Net; using System.Net.Http; using System.Runtime.Serialization.Formatters.Binary; using System.Web; using System.Web.Http; namespace WebApi.Controllers { public class HomeController : ApiController { /// <summary> /// 接收Base64编码格式的图片 /// </summary> public void Upload() { //获取base64编码的图片 HttpContextBase context = (HttpContextBase)Request.Properties["MS_HttpContext"]; string text = context.Request.Form["file"]; //获取文件储存路径 string path = context.Request.MapPath("~/"); //获取当前项目所在目录 string datetime = GetTimeStamp(); string suffix = ".jpg"; //文件的后缀名根据实际情况 string strPath = path + "App_Data/" + datetime + suffix; //获取图片并保存 Base64ToImg(text.Split(‘,‘)[1]).Save(strPath); } //解析base64编码获取图片 private Bitmap Base64ToImg(string base64Code) { MemoryStream stream = new MemoryStream(Convert.FromBase64String(base64Code)); return new Bitmap(stream); } //获取当前时间段额时间戳 public string GetTimeStamp() { TimeSpan ts = DateTime.UtcNow - new DateTime(1970, 1, 1, 0, 0, 0, 0); return Convert.ToInt64(ts.TotalMilliseconds).ToString(); } } }
方法二:
该方法我正在用,删减了一些业务上的操作,有一些类的引用需要自己删掉或者写一下,保存图片的方法放在方法类中,不要放在Api控制器中
using IServices; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Cors; using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc; using Core.Dto; using Core.Orm.SqlSugar; using Utils.Configs; using System; using System.Net; using System.Net.Sockets; namespace Api.Controllers { /// <summary> /// 图片接口 /// </summary> [Route("api/[controller]/[action]")] [EnableCors("any")] [AllowAnonymous] public class ImageController : ControllerBase { private readonly IQalCJServices _qalCJServices; private readonly IQalCJImageServices _qalCJImageServices; /// <summary> /// 依赖注入 /// </summary> public ImageController(IQalCJServices qalCJServices, IQalCJImageServices qalCJImageServices) { _qalCJServices = qalCJServices; _qalCJImageServices = qalCJImageServices; } /// <summary> /// 上传图片 /// </summary> /// <returns></returns> [HttpPost] public IActionResult UpdateImage() { //接收图片Base64编码 string Image = Request.Form["Image"].ToString(); var date = DateTime.Now; string msg = string.Empty; string ImagePath; try { //图片路径 string ImageUrl = string.Format(ImagePathConfig + @"fgsb\{0}\{1}\{2}\", date.ToString("yyyy"), date.ToString("MM"), date.ToString("dd")); //解析图片,保存图片 Base64StringToImage(Image, ImageUrl); } catch (Exception ex) { msg = ex.Message; } return new JsonResult(new { code = string.IsNullOrEmpty(msg) ? 1 : 100, msg = string.IsNullOrEmpty(msg) ? "成功" : msg }); } /// <summary> /// base64编码的文本 转为 图片 /// </summary> /// <param name="Image"></param> public void Base64StringToImage(string Image, string FilePath) { ImagePath = string.Empty; try { byte[] arr = Convert.FromBase64String(Image); MemoryStream ms = new MemoryStream(arr); Bitmap bmp = new Bitmap(ms); //检查保存目录 if (!Directory.Exists(FilePath)) { Directory.CreateDirectory(FilePath); } //图片名称 string ImageName = DateTime.Now.ToString("yyyyMMddHHmmss"); if (!string.IsNullOrEmpty(SteelGalleryCode)) { ImageName = ImageName + '-' + SteelGalleryCode; } ImagePath = FilePath + ImageName + ".jpg"; //保存图片 bmp.Save(ImagePath, System.Drawing.Imaging.ImageFormat.Jpeg); //bmp.Save(txtFileName + ".bmp", ImageFormat.Bmp); //bmp.Save(txtFileName + ".gif", ImageFormat.Gif); //bmp.Save(txtFileName + ".png", ImageFormat.Png); ms.Close(); } catch (Exception ex) { //MessageBox.Show("Base64StringToImage 转换失败\nException:" + ex.Message); } } } }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库