Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Sending Files using HTTP POST in c# [closed]

Tags:

I have a small C# web application.How can I get the c# code that allows user to send files by HTTP POST.It should be able to send text files,image files,excel, csv, doc (all types of files) without using stream reader and all.

like image 517
Sudha Avatar asked Apr 01 '13 06:04

Sudha


People also ask

What is HTTP Post in C#?

HTTP Post. A POST request sends data to the server for processing. The Content-Type header of the request signifies what MIME type the body is sending. To make an HTTP POST request, given an HttpClient and a URI, use the HttpClient.PostAsync method: C# Copy.


1 Answers

You can try the following code:

    public void PostMultipleFiles(string url, string[] files) {     string boundary = "----------------------------" + DateTime.Now.Ticks.ToString("x");     HttpWebRequest httpWebRequest = (HttpWebRequest)WebRequest.Create(url);     httpWebRequest.ContentType = "multipart/form-data; boundary=" + boundary;     httpWebRequest.Method = "POST";     httpWebRequest.KeepAlive = true;     httpWebRequest.Credentials = System.Net.CredentialCache.DefaultCredentials;     Stream memStream = new System.IO.MemoryStream();     byte[] boundarybytes =System.Text.Encoding.ASCII.GetBytes("\r\n--" + boundary     +"\r\n");     string formdataTemplate = "\r\n--" + boundary + "\r\nContent-Disposition:  form-data; name=\"{0}\";\r\n\r\n{1}";     string headerTemplate = "Content-Disposition: form-data; name=\"{0}\"; filename=\"{1}\"\r\n Content-Type: application/octet-stream\r\n\r\n";     memStream.Write(boundarybytes, 0, boundarybytes.Length);     for (int i = 0; i < files.Length; i++)     {         string header = string.Format(headerTemplate, "file" + i, files[i]);         //string header = string.Format(headerTemplate, "uplTheFile", files[i]);         byte[] headerbytes = System.Text.Encoding.UTF8.GetBytes(header);         memStream.Write(headerbytes, 0, headerbytes.Length);         FileStream fileStream = new FileStream(files[i], FileMode.Open,         FileAccess.Read);         byte[] buffer = new byte[1024];         int bytesRead = 0;         while ((bytesRead = fileStream.Read(buffer, 0, buffer.Length)) != 0)         {             memStream.Write(buffer, 0, bytesRead);         }         memStream.Write(boundarybytes, 0, boundarybytes.Length);         fileStream.Close();     }     httpWebRequest.ContentLength = memStream.Length;     Stream requestStream = httpWebRequest.GetRequestStream();     memStream.Position = 0;     byte[] tempBuffer = new byte[memStream.Length];     memStream.Read(tempBuffer, 0, tempBuffer.Length);     memStream.Close();     requestStream.Write(tempBuffer, 0, tempBuffer.Length);     requestStream.Close();     try     {         WebResponse webResponse = httpWebRequest.GetResponse();         Stream stream = webResponse.GetResponseStream();         StreamReader reader = new StreamReader(stream);         string var = reader.ReadToEnd();      }     catch (Exception ex)     {         response.InnerHtml = ex.Message;     }     httpWebRequest = null; } 
like image 79
Bisileesh Avatar answered Oct 26 '22 23:10

Bisileesh