public static Boolean PostFiles(string address, string sessionid, List <UploadFile> files, NameValueCollection values) { try { //Uri uri = new Uri((address)); var cookieContainer = new CookieContainer(); if (!String.IsNullOrEmpty(sessionid)) { Uri uri = new Uri(UrlUtility.GetUrlWithoutQuery(address)); cookieContainer.Add(uri, new Cookie("SESSIONID", sessionid)); } ServicePointManager.ServerCertificateValidationCallback = delegate { return(true); }; using (var handler = new HttpClientHandler() { CookieContainer = cookieContainer }) { using (var client = new HttpClient(handler)) { var parts = new MultipartFormDataContent(); for (int i = 0; i < files.Count; i++) { parts.Add(new StreamContent(File.Open(files[i].FullPath, FileMode.Open)), files[i].Filename, files[i].Filename); } var result = client.PostAsync(address, parts); if (result != null) { HttpResponseMessage response = result.Result; Console.WriteLine(result.Result.ToString()); return(response.StatusCode == HttpStatusCode.OK); } } } } catch (Exception e) { Debug.WriteLine(e.Message); } return(false); }
public static Boolean UploadFiles(string address, string sessionid, List <UploadFile> files, NameValueCollection values, StringBuilder resultMessage) { try { //Uri uri = new Uri((address)); HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(address); request.CookieContainer = new CookieContainer(); ServicePointManager.ServerCertificateValidationCallback = delegate { return(true); }; if (!String.IsNullOrEmpty(sessionid)) { Uri uri = new Uri(UrlUtility.GetUrlWithoutQuery(address)); request.CookieContainer.Add(uri, new Cookie("SESSIONID", sessionid)); } request.Method = "POST"; var boundary = "---------------------------" + DateTime.Now.Ticks.ToString("x", NumberFormatInfo.InvariantInfo); request.ContentType = "multipart/form-data; boundary=" + boundary; boundary = "--" + boundary; using (var bodyStream = request.GetRequestStream()) { // Write the values if (values != null) { foreach (string name in values.Keys) { var buffer = Encoding.ASCII.GetBytes(boundary + Environment.NewLine); bodyStream.Write(buffer, 0, buffer.Length); buffer = Encoding.ASCII.GetBytes(string.Format("Content-Disposition: form-data; name=\"{0}\"{1}{1}", name, Environment.NewLine)); bodyStream.Write(buffer, 0, buffer.Length); buffer = Encoding.ASCII.GetBytes(values[name] + Environment.NewLine); bodyStream.Write(buffer, 0, buffer.Length); } } // Write the files if (files != null) { foreach (UploadFile file in files) { var buffer = Encoding.ASCII.GetBytes(boundary + Environment.NewLine); bodyStream.Write(buffer, 0, buffer.Length); buffer = Encoding.ASCII.GetBytes(string.Format("Content-Disposition: form-data; name=\"{0}\"; filename=\"{1}\"{2}", UrlUtility.UrlEncode(file.Name), UrlUtility.UrlEncode(file.Filename), Environment.NewLine)); bodyStream.Write(buffer, 0, buffer.Length); buffer = Encoding.ASCII.GetBytes(string.Format("Content-Type: {0}{1}{1}", file.ContentType, Environment.NewLine)); bodyStream.Write(buffer, 0, buffer.Length); buffer = File.ReadAllBytes(file.FullPath); bodyStream.Write(buffer, 0, buffer.Length); //using (FileStream fileStream = File.Open(file.FullPath, FileMode.Open)) //{ //fileStream.CopyTo(requestStream); //} buffer = Encoding.ASCII.GetBytes(Environment.NewLine); bodyStream.Write(buffer, 0, buffer.Length); } } var boundaryBuffer = Encoding.ASCII.GetBytes(boundary + "--"); bodyStream.Write(boundaryBuffer, 0, boundaryBuffer.Length); } HttpWebResponse response = (HttpWebResponse)request.GetResponse(); if (response != null) { using (Stream responseStream = response.GetResponseStream()) { if (resultMessage != null) { Encoding encode = System.Text.Encoding.GetEncoding("utf-8"); StreamReader readStream = new StreamReader(responseStream, encode); char[] read = new char[2048]; int count = readStream.Read(read, 0, read.Length); while (count > 0) { String str = new String(read, 0, count); resultMessage.Append(str); count = readStream.Read(read, 0, read.Length); } } } } if ((resultMessage != null) && (resultMessage.Length <= 0)) { resultMessage.Append("无任务编号"); return(false); } return(response.StatusCode == HttpStatusCode.OK); } catch (Exception e) { if (resultMessage != null) { resultMessage.Append(e.Message); } Debug.WriteLine(e.Message); } if ((resultMessage != null) && (resultMessage.Length <= 0)) { resultMessage.Append("上载失败"); } return(false); }