入门客AI创业平台(我带你入门,你带我飞行)
博文笔记

Asp.net Base64图片上传

创建时间:2016-09-06 投稿人: 浏览次数:3114

说明:我的图片服务器地址是自定义的,各位按自己需要配置,另外对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(); //关闭输出流
                }
            }            
        }

完工!!!



声明:该文观点仅代表作者本人,入门客AI创业平台信息发布平台仅提供信息存储空间服务,如有疑问请联系rumenke@qq.com。