ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

WebApi接口接收Base64图片

2022-07-07 18:01:32  阅读:93  来源: 互联网

标签:WebApi string Base64 System 接口 new using public 图片


方法一:

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);
            }
        }
    }
}    

 

标签:WebApi,string,Base64,System,接口,new,using,public,图片
来源: https://www.cnblogs.com/corechen/p/16455620.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有