h5跨域访问图片_html5上传图片(一)一跨域上传

public override voidProcessRequest(HttpContext context)

{//获取目标站点地址

String target = "图片服务器地址";string sid = context.Request["sid"];

target= string.Format("{0}?city=&channel=频道&sid={1}&backurl=",target,sid);if(context.Request.Files.Count>0)

{var file = context.Request.Files[0];

HttpWebRequest request= WebRequest.Create(target) asHttpWebRequest;

CookieContainer cookieContainer= newCookieContainer();

request.CookieContainer=cookieContainer;

request.AllowAutoRedirect= true;

request.Method= "POST";

request.Headers.Add("Origin", "http://" +context.Request.UrlReferrer.Host);

request.Headers.Add("Accept-Encoding", "gzip, deflate");

request.Headers.Add("Accept-Language", "zh-CN,zh;q=0.8");

request.Headers.Add("Upgrade-Insecure-Requests", "1");

request.Referer=context.Request.UrlReferrer.OriginalString;string boundary = DateTime.Now.Ticks.ToString("X"); //随机分隔线

request.ContentType = "multipart/form-data;charset=utf-8;boundary=" +boundary;byte[] itemBoundaryBytes = Encoding.UTF8.GetBytes("\r\n--" + boundary + "\r\n");byte[] endBoundaryBytes = Encoding.UTF8.GetBytes("\r\n--" + boundary + "--\r\n");//请求头部信息

StringBuilder sbHeader = new StringBuilder(string.Format("Content-Disposition:form-data;name=\"file\";filename=\"{0}\"\r\nContent-Type:application/octet-stream\r\n\r\n", file.FileName));byte[] postHeaderBytes =Encoding.UTF8.GetBytes(sbHeader.ToString());//FileStream fs = new FileStream(path, FileMode.Open, FileAccess.Read);

byte[] bArr = new byte[file.InputStream.Length];

file.InputStream.Read(bArr,0, bArr.Length);

file.InputStream.Close();

Stream postStream=request.GetRequestStream();

postStream.Write(itemBoundaryBytes,0, itemBoundaryBytes.Length);

postStream.Write(postHeaderBytes,0, postHeaderBytes.Length);

postStream.Write(bArr,0, bArr.Length);

postStream.Write(endBoundaryBytes,0, endBoundaryBytes.Length);

postStream.Close();//发送请求并获取相应回应数据

HttpWebResponse response = request.GetResponse() asHttpWebResponse;

SetCookie(response,context);

}

}//response是目标服务器的响应对象,context是返回给浏览器的上下文对象

voidSetCookie(HttpWebResponse response, HttpContext context)

{foreach (Cookie cookie inresponse.Cookies)

{if (cookie.Name!=null&&cookie.Name.StartsWith("img"))

{string result=string.Empty;if (cookie.Value != null && cookie.Value.StartsWith("http://"))

{

Regex r= new Regex(@"^.*?(?=\|)");

result=r.Match(cookie.Value).Value;

}else{

result=cookie.Value;

}

context.Response.Write(result);

context.Response.End();

}

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值