Asp.net Base64图片上传

本文介绍如何在ASP.NET MVC应用中处理Base64编码的图片上传。内容涵盖控制器Action的设计以及核心的UploadBase64Image方法,详细讲解了自定义图片服务器地址的配置和Base64图片数据的处理过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

说明:我的图片服务器地址是自定义的,各位按自己需要配置,另外对base64编码的图片数据做了

【<span style="color:#ff6666;">data:image/png;base64,</span><span style="color:#cc66cc;">[base64数据]</span><span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);">】 按照颜色划分</span>

1.我的控制器里的一个Action 

 /// <summary>
        /// 上传图片(数据格式base64)
        /// </summary>
        public void UploadImg()
        {
            //获取上传数据
            var data = JSONHelper.GetModel<Dictionary<string, object>>(RequestParameters.data.ToString());
            if (data.ContainsKey("image") && !string.IsNullOrEmpty(data["image"].ToString()))
            {
                //1.base64图片数据
                string allImageStr = data["image"].ToString();
                //2.获取标准图片服务器地址
                string url = WebConfig.LoadElement("url");
                string responseStr = UploadHelper.UploadBase64Image(allImageStr,url);

                result.Data = responseStr;
                result.Succeeded = true;
                result.Msg = "上传成功";
            }
            else {
                result.Data = "";
                result.Succeeded = false;
                result.Msg = "上传失败";
            }
        }

2.UploadBase64Image 核心业务方法

 /// <summary>
        /// 上传Base64图片数据
        /// </summary>
        /// <param name="base64Data">base64 编码的图片数据</param>
        /// <param name="url">标准 服务器图片地址</param>
        /// <returns></returns>
        public static string UploadBase64Image(string base64Data,string url)
        {
            //1.处理base64字符  data:image/png;base64,
            string requestStrValue = base64Data.Substring(base64Data.IndexOf(',') + 1);//代表 图片 的base64编码数据
            string requestFileExtension = base64Data.Split(new char[] { ';' })[0].Substring(base64Data.IndexOf('/') + 1);//获取后缀名

            //2.将【标准 服务器图片地址】修改为【base64 服务器图片地址】
            //base64="base64"&imagename=图片名
            string fileName = GuidHelper.GetSecuentialGuid().ToString() + "." + requestFileExtension;
            url += "&action=custom&base64=base64&imagename=" + fileName;

            //3.准备请求 设置参数
            Encoding encoding = Encoding.UTF8;//设置编码格式
            HttpWebRequest request = WebRequest.CreateHttp(url);
            request.Method = "POST";
            request.ContentType = "application/x-www-form-urlencoded";
            string requestStr = "upfile=" + requestStrValue;//设置数据键值
            byte[] postData = encoding.GetBytes(requestStr);
            request.ContentLength = postData.Length;
            
            //4.Stream操作
            Stream requestStream = null;//建立请求输入流
            StreamReader reader = null;//获取服务器返回流
            try
            {
                //4.1输入流写入数据
                requestStream = request.GetRequestStream();//获取输入流                
                requestStream.Write(postData, 0, postData.Length);//将数据读入流中

                //4.2输出流读取数据
                HttpWebResponse response = request.GetResponse() as HttpWebResponse;
                reader = new StreamReader(response.GetResponseStream(), encoding);                
                string responseStr = reader.ReadToEnd();//读取返回流数据

                return responseStr;//返回Json数据
            }
            finally
            {
                if(requestStream != null)
                {
                    requestStream.Close();//关闭输入流
                }
                if (reader != null)
                {
                    reader.Close(); //关闭输出流
                }
            }            
        }

完工!!!



评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值