HttpWebRequest 上传图片
Posted 雪原日暮
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了HttpWebRequest 上传图片相关的知识,希望对你有一定的参考价值。
public string HttpUploadFile() { string url = "http://localhost:50380/WebForm1.aspx"; string filepath = "C:\\Users\\lei2.wang\\Desktop\\Capture.PNG"; string fileformname = "Capture.PNG"; string poststr = ""; // 这个可以是改变的,也可以是下面这个固定的字符串 string boundary = "------WebKitFormBoundarylAiKcuBRGd1pRVJI"; // 创建request对象 HttpWebRequest webrequest = (HttpWebRequest)WebRequest.Create(url); webrequest.ContentType = " multipart/form-data; boundary=----WebKitFormBoundarylAiKcuBRGd1pRVJI"; webrequest.Method = "POST"; webrequest.Headers.Add("Cookie: SGSRev_Order_ReportUser=billy-wp_li; SGSBlackClientListUser=seven_jiang; SGSCNComplaintCaseUser=Jiang_Seven; CtsisUserCode=apac\\Seven_Jiang; CNZZDATA1996164=cnzz_eid%3D798484094-1479962914-http%253A%252F%252Flocalhost%253A35708%252F%26ntime%3D1479974059 "); webrequest.Referer = "http://localhost:50380/WebForm1.aspx"; //webrequest.Proxy = new WebProxy("127.0.0.1", 8888); // new WebProxy("127.0.0.1", "8888");//:8888 // 构造发送数据 StringBuilder sb = new StringBuilder(); // 文本域的数据,将user=eking&pass=123456 格式的文本域拆分 ,然后构造 sb.Append("\r\n"); sb.Append("\r\n"); sb.Append("------WebKitFormBoundarylAiKcuBRGd1pRVJI"); sb.Append("\r\n"); sb.Append("Content-Disposition: form-data; name=\"__VIEWSTATE\""); sb.Append("\r\n"); sb.Append("\r\n"); sb.Append("revyQ+TvGvOWCVIQshKUEnHeGf0ftCH92iHWuRYVAct4lnXANDjVJUFuMPHDleYjIQfcrEsDhwzGYtRqw+fVLeUPs6OhI7/w2gubieoS4RQ="); sb.Append("\r\n"); // 文件域的数据 sb.Append("------WebKitFormBoundarylAiKcuBRGd1pRVJI"); sb.Append("\r\n"); sb.Append("Content-Disposition: form-data; name=\"aaab\"; filename=\"" + fileformname + "\""); sb.Append("\r\n"); sb.Append("Content-Type: image/jpeg"); sb.Append("\r\n"); sb.Append("\r\n"); string postHeader = sb.ToString(); byte[] postHeaderBytes = Encoding.UTF8.GetBytes(postHeader); //构造尾部数据 StringBuilder sb1 = new StringBuilder(); sb1.Append("------WebKitFormBoundarylAiKcuBRGd1pRVJI"); sb1.Append("\r\n"); sb1.Append("Content-Disposition: form-data; name=\"__VIEWSTATEGENERATOR\""); sb1.Append("\r\n"); sb1.Append("\r\n"); sb1.Append("C687F31A"); sb1.Append("\r\n"); sb1.Append("------WebKitFormBoundarylAiKcuBRGd1pRVJI--"); sb1.Append("\r\n"); sb1.Append("\r\n"); byte[] boundaryBytes = Encoding.ASCII.GetBytes(sb1.ToString()); var cc = sb1.ToString(); FileStream fileStream = new FileStream(filepath, FileMode.Open, FileAccess.Read); long length = postHeaderBytes.Length + fileStream.Length + boundaryBytes.Length; webrequest.ContentLength = length; Stream requestStream = webrequest.GetRequestStream(); // 输入头部数据 requestStream.Write(postHeaderBytes, 0, postHeaderBytes.Length); // 输入文件流数据 byte[] buffer = new Byte[checked((uint)Math.Min(4096, (int)fileStream.Length))]; int bytesRead = 0; while ((bytesRead = fileStream.Read(buffer, 0, buffer.Length)) != 0) requestStream.Write(buffer, 0, bytesRead); // 输入尾部数据 requestStream.Write(boundaryBytes, 0, boundaryBytes.Length); WebResponse responce = webrequest.GetResponse(); Stream s = responce.GetResponseStream(); StreamReader sr = new StreamReader(s); // 返回数据流(源码) return sr.ReadToEnd(); }
protected void Page_Load(object sender, EventArgs e) { var aa= Request.Files[0]; HttpFileCollection hfc = HttpContext.Current.Request.Files; //获取文件,保存图片 HttpPostedFile hpf = hfc[0]; int extIndex = hpf.FileName.LastIndexOf(‘.‘); string ext = hpf.FileName.Substring(extIndex); string fileName = Guid.NewGuid().ToString(); string dir = HttpContext.Current.Server.MapPath("photos/buildings/"); hpf.SaveAs(dir + fileName + ext); }
以上是关于HttpWebRequest 上传图片的主要内容,如果未能解决你的问题,请参考以下文章
转asp.net(c#)使用HttpWebRequest附加携带请求参数以post方式模拟上传大文件(以图片为例)到Web服务器端
C# 发送HttpWebRequest获得网络图片的大小尺寸
使用 HttpWebRequest,将文件上传到 SharePoint 时,WebResponse 是未编译的 aspx 页面