C# 使用HttpWebRequest通过PHP接口 上传文件

 

1:上传文件实例

 public void UploadXMLLog(string xmlpath)         {             NameValueCollection nvc = new NameValueCollection();             CookieContainer cookies = new CookieContainer();             nvc.Add("", “”);             ......             string url = "UrlPath";             string res = UploadFile(xmlpath, url, nvc, cookies);         }

2:UploadFile源码

  1  public string UploadFile(string uploadfile, string url, NameValueCollection querystring, CookieContainer cookies, string fileFormName = "file", string contenttype = "multipart/form-data")  2  {  3 if ((fileFormName == null) ||  4 (fileFormName.Length == 0))  5  {  6 fileFormName = "file";  7  }  8  9 if ((contenttype == null) ||  10 (contenttype.Length == 0))  11  {  12 contenttype = "application/octet-stream";  13  }  14 Uri uri = new Uri(url);  15 string boundary = "----------" + DateTime.Now.Ticks.ToString("x");  16 HttpWebRequest webrequest = (HttpWebRequest)WebRequest.Create(uri);  17 webrequest.CookieContainer = cookies;  18 webrequest.ContentType = "multipart/form-data; boundary=" + boundary;  19 webrequest.Method = "POST";  20 StringBuilder sb = new StringBuilder();  21 sb.Append("--");  22  sb.Append(boundary);  23 sb.Append("\r\n");  24 sb.Append("Content-Disposition: form-data; name=\"");  25  sb.Append(fileFormName);  26 sb.Append("\"; filename=\"");  27  sb.Append(uploadfile);  28 sb.Append("\"");  29 sb.Append("\r\n");  30 sb.Append("Content-Type: ");  31  sb.Append(contenttype);  32 sb.Append("\r\n");  33 sb.Append("\r\n");  34  35 string postHeader = sb.ToString();  36 byte[] postHeaderBytes = Encoding.UTF8.GetBytes(postHeader);  37 byte[] boundaryBytes = Encoding.ASCII.GetBytes("--" + boundary + "\r\n");  38 byte[] br = Encoding.ASCII.GetBytes("\r\n");  39 FileStream fileStream = new FileStream(uploadfile, FileMode.Open, FileAccess.Read);  40 long length = postHeaderBytes.Length + fileStream.Length + br.Length;  41 if (querystring != null)  42  {  43  44 StringBuilder sub = new StringBuilder();  45 foreach (string key in querystring.Keys)  46  {  47 sub.Append("--");  48  sub.Append(boundary);  49 sub.Append("\r\n");  50 sub.Append("Content-Disposition: form-data; name=\"");  51  sub.Append(key);  52 sub.Append("\"");  53 sub.Append("\r\n");  54 sub.Append("\r\n");  55  sub.Append(querystring[key]);  56 sub.Append("\r\n");  57 byte[] formitembytes = Encoding.UTF8.GetBytes(sub.ToString());  58 length += formitembytes.Length;  59  }  60  }  61 length += boundaryBytes.Length;  62 webrequest.ContentLength = length;  63 Stream requestStream = webrequest.GetRequestStream();  64 // Write out our post header  65 requestStream.Write(postHeaderBytes, 0, postHeaderBytes.Length);  66  67 // Write out the file contents  68 

转载于:https://www.cnblogs.com/chun6/p/6230868.html


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部