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 "";
            }
 
        }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

13   голосов , оценка 3.769 из 5