您的位置:首页 > 编程语言 > ASP

Asp.net Base64图片上传

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

完工!!!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息