Advertisement
makapoh

c# file upload

Sep 18th, 2012
320
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 3.18 KB | None | 0 0
  1. /*
  2. string response_text = HttpUploadFile(url, @filename, "photo", "image/jpeg", new NameValueCollection());
  3. */
  4. public string HttpUploadFile(string url, string file, string paramName, string contentType, NameValueCollection nvc)
  5.         {
  6.             string boundary = "---------------------------" + DateTime.Now.Ticks.ToString("x");
  7.             byte[] boundarybytes = System.Text.Encoding.ASCII.GetBytes("\r\n--" + boundary + "\r\n");
  8.  
  9.             HttpWebRequest wr = (HttpWebRequest)WebRequest.Create(url);
  10.             //wr.ContentType = "multipart/form-data; boundary=" + boundary;
  11.             wr.ContentType = "multipart/form-data; boundary=" + boundary;
  12.             wr.Method = "POST";
  13.             wr.KeepAlive = true;
  14.             wr.Credentials = System.Net.CredentialCache.DefaultCredentials;
  15.  
  16.             Stream rs = wr.GetRequestStream();
  17.  
  18.             string formdataTemplate = "Content-Disposition: form-data; name=\"{0}\"\r\n\r\n{1}";
  19.             foreach (string key in nvc.Keys)
  20.             {
  21.                 rs.Write(boundarybytes, 0, boundarybytes.Length);
  22.                 string formitem = string.Format(formdataTemplate, key, nvc[key]);
  23.                 byte[] formitembytes = System.Text.Encoding.UTF8.GetBytes(formitem);
  24.                 rs.Write(formitembytes, 0, formitembytes.Length);
  25.             }
  26.             rs.Write(boundarybytes, 0, boundarybytes.Length);
  27.  
  28.             string headerTemplate = "Content-Disposition: form-data; name=\"{0}\"; filename=\"{1}\"\r\nContent-Type: {2}\r\n\r\n";
  29.             string header = string.Format(headerTemplate, paramName, file, contentType);
  30.             byte[] headerbytes = System.Text.Encoding.UTF8.GetBytes(header);
  31.             rs.Write(headerbytes, 0, headerbytes.Length);
  32.  
  33.             FileStream fileStream = new FileStream(file, FileMode.Open, FileAccess.Read);
  34.             byte[] buffer = new byte[4096];
  35.             int bytesRead = 0;
  36.             while ((bytesRead = fileStream.Read(buffer, 0, buffer.Length)) != 0)
  37.             {
  38.                 rs.Write(buffer, 0, bytesRead);
  39.             }
  40.             fileStream.Close();
  41.  
  42.             byte[] trailer = System.Text.Encoding.ASCII.GetBytes("\r\n--" + boundary + "--\r\n");
  43.             rs.Write(trailer, 0, trailer.Length);
  44.             rs.Close();
  45.  
  46.             WebResponse wresp = null;
  47.             try
  48.             {
  49.                 wresp = wr.GetResponse();
  50.                 Stream stream2 = wresp.GetResponseStream();
  51.                 StreamReader reader2 = new StreamReader(stream2);
  52.                 string s3 = reader2.ReadToEnd();
  53.                 return s3;
  54.             }
  55.             catch (Exception ex)
  56.             {
  57.                 Console.WriteLine("Error uploading file", ex);
  58.                 if (wresp != null)
  59.                 {
  60.                     wresp.Close();
  61.                     wresp = null;
  62.                 }
  63.  
  64.                 wresp = wr.GetResponse();
  65.                 Stream stream2 = wresp.GetResponseStream();
  66.                 StreamReader reader2 = new StreamReader(stream2);
  67.  
  68.                 string s3 = reader2.ReadToEnd();
  69.                 return s3;
  70.             }
  71.             finally
  72.             {
  73.                 wr = null;
  74.             }
  75.         }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement