Http POST отправка файла в теле запроса - C#
Формулировка задачи:
Всем привет!
Пытаюсь отправить файл на сервер, но со стороны сервера мне говорят, что нужно отправлять файл в теле запроса, не пойму как это реализовать
WebRequest wr; wr = WebRequest.Create("http://____/"); wr.Method = "POST"; wr.ContentType = "_______"; byte[] byteArray = File.ReadAllBytes(fileName); wr.ContentLength = byteArray.Length; Stream dataStream = wr.GetRequestStream(); dataStream.Write(byteArray, 0, byteArray.Length); dataStream.Close(); var response = ((HttpWebResponse)wr.GetResponse()).GetResponseStream(); StreamReader reader = new StreamReader(response); string responseFromServer = reader.ReadToEnd(); reader.Close(); response.Close();
Решение задачи: «Http POST отправка файла в теле запроса»
textual
Листинг программы
public string UploadTxTFile(string scrFileName,string fullpath) { StringBuilder sb = new StringBuilder(); sb.AppendLine("------WebKitFormBoundaryFQyoiBAmgWBjjIyg"); sb.AppendLine("Content-Disposition: form-data; name=\"X-Client-Version\""); sb.AppendLine(""); sb.AppendLine(""); sb.AppendLine("1.0.00"); sb.AppendLine("------WebKitFormBoundaryFQyoiBAmgWBjjIyg"); sb.AppendLine("Content-Disposition: form-data; name=\"X-Client-Type\""); sb.AppendLine(""); sb.AppendLine("API"); sb.AppendLine("------WebKitFormBoundaryFQyoiBAmgWBjjIyg"); sb.AppendLine("Content-Disposition: form-data; name=\"X-Api-Version\""); sb.AppendLine(""); sb.AppendLine("1.0"); sb.AppendLine("------WebKitFormBoundaryFQyoiBAmgWBjjIyg"); sb.AppendLine("Content-Disposition: form-data; name=\"X-Authorization\""); sb.AppendLine(""); sb.AppendLine(ATU); sb.AppendLine(""); sb.AppendLine("------WebKitFormBoundaryFQyoiBAmgWBjjIyg"); sb.AppendLine("Content-Disposition: form-data; name=\"Accept\""); sb.AppendLine(""); sb.AppendLine("application/json"); sb.AppendLine("------WebKitFormBoundaryFQyoiBAmgWBjjIyg"); sb.AppendLine("Content-Disposition: form-data; name=\"file\"; filename=\""+scrFileName+"\""); sb.AppendLine("Content-Type: application/octet-stream"); sb.AppendLine(""); byte[] nach = Encoding.ASCII.GetBytes(sb.ToString()); byte[] str = File.ReadAllBytes(fullpath); byte[] stri = Encoding.ASCII.GetBytes(Environment.NewLine); byte[] str2 = Encoding.ASCII.GetBytes("------WebKitFormBoundaryFQyoiBAmgWBjjIyg--"); HttpWebRequest request = (HttpWebRequest)WebRequest.Create("https://www.copy.com/api/rest/meta/copy"); request.CookieContainer = new CookieContainer(); request.Accept = "application/json"; request.ServicePoint.Expect100Continue = false; request.Referer = "https://www.copy.com/browse/copy"; request.ContentType = "multipart/form-data; boundary=----WebKitFormBoundaryFQyoiBAmgWBjjIyg"; request.UserAgent = " Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/36.0.1985.125 Safari/537.36"; request.AllowAutoRedirect = true; // request.Proxy = new WebProxy("84.27.75.236:39460"); request.Host = "www.copy.com"; request.KeepAlive = true; request.Headers.Add("X-Requested-With: XMLHttpRequest"); request.Headers.Add("X-Api-Version: 1.0"); request.Headers.Add("X-Client-Version: 1.0.00"); request.Headers.Add("X-Authorization: "+ATU); request.Headers.Add("X-Client-Type: API"); request.Headers.Add("Accept-Encoding: gzip,deflate,sdch"); request.Headers.Add("Accept-Language: ru-RU,ru;q=0.8,en-US;q=0.6,en;q=0.4"); if ((Cooks != null)) { request.CookieContainer.Add(Cooks); } request.Method = "POST"; request.ContentLength = nach.Length + str.Length + str2.Length + stri.Length; using (Stream requestStream = request.GetRequestStream()) { requestStream.Write(nach, 0, nach.Length); requestStream.Write(str, 0, str.Length); requestStream.Write(stri, 0, stri.Length); requestStream.Write(str2, 0, str2.Length); requestStream.Close(); } try { using (HttpWebResponse response = (HttpWebResponse)request.GetResponse()) { response.Cookies = request.CookieContainer.GetCookies(request.RequestUri); if (response.Cookies != null) { Cooks.Add(response.Cookies); } return getLink(scrFileName); } } catch (WebException) { return ""; } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д