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