Guest User

for vingrad

a guest
Feb 22nd, 2011
192
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 4.73 KB | None | 0 0
  1. private Stream StreamResp
  2.         {
  3.             get;
  4.             set;
  5.         }
  6.  
  7.         /// <summary>Загрузка изображения на сервер</summary>
  8.         /// <param name="pngImage">
  9.         /// Искомое изображение
  10.         /// </param>
  11.         /// <exception cref="WebException">Возникает при ошибке отправки на сервер</exception>
  12.         public override void UploadImage(Bitmap pngImage)
  13.         {
  14.             // Init
  15.             var cultureInfo = CultureInfo.InvariantCulture;
  16.             const string Filename = "picture.png";
  17.             const string MimeType = "image/png";
  18.             var imageFormat = ImageFormat.Png;
  19.            
  20.             // Prepare POST contents...
  21.             using (var memoryStream = new MemoryStream())
  22.             {
  23.                 // Parts boundary
  24.                 var boundary = "-------" + DateTime.Now.Ticks.ToString("x", cultureInfo);
  25.                 const string Crlf = "\r\n";
  26.  
  27.                 // Image file...
  28.                 var data = "--" + boundary + Crlf;
  29.                 var dataBytes = Encoding.ASCII.GetBytes(data);
  30.                 memoryStream.Write(dataBytes, 0, dataBytes.Length);
  31.  
  32.                 data =
  33.                     String.Format(
  34.                     cultureInfo,
  35.                     "Content-Disposition: form-data; name=\"fileupload\"; filename=\"{0}\"",
  36.                     Filename) + Crlf;
  37.                 dataBytes = Encoding.ASCII.GetBytes(data);
  38.                 memoryStream.Write(dataBytes, 0, dataBytes.Length);
  39.  
  40.                 data = String.Format(cultureInfo, "Content-Type: {0}", MimeType) + Crlf;
  41.                 dataBytes = Encoding.ASCII.GetBytes(data);
  42.                 memoryStream.Write(dataBytes, 0, dataBytes.Length);
  43.  
  44.                 memoryStream.Write(Encoding.ASCII.GetBytes(Crlf), 0, Crlf.Length);
  45.                 pngImage.Save(memoryStream, imageFormat);
  46.  
  47.                 memoryStream.Write(Encoding.ASCII.GetBytes(Crlf), 0, Crlf.Length);
  48.  
  49.                 // передаем ключ
  50.                 var parameters = new NameValueCollection
  51.                                                         {
  52.                                                             {
  53.                                                                 "key",
  54.                                                                 KeyDevelop
  55.                                                             }
  56.                                                         };
  57.  
  58.                 foreach (var paramName in parameters.Keys)
  59.                 {
  60.                     var paramValue = parameters.Get(paramName.ToString());
  61.  
  62.                     data = "--" + boundary + Crlf;
  63.                     dataBytes = Encoding.ASCII.GetBytes(data);
  64.                     memoryStream.Write(dataBytes, 0, dataBytes.Length);
  65.  
  66.                     data = String.Format(cultureInfo, "Content-Disposition: form-data; name=\"{0}\"", paramName) + Crlf;
  67.                     dataBytes = Encoding.ASCII.GetBytes(data);
  68.                     memoryStream.Write(dataBytes, 0, dataBytes.Length);
  69.  
  70.                     memoryStream.Write(Encoding.ASCII.GetBytes(Crlf), 0, Crlf.Length);
  71.  
  72.                     data = paramValue;
  73.                     dataBytes = Encoding.ASCII.GetBytes(data);
  74.                     memoryStream.Write(dataBytes, 0, dataBytes.Length);
  75.  
  76.                     memoryStream.Write(Encoding.ASCII.GetBytes(Crlf), 0, Crlf.Length);
  77.                 }
  78.  
  79.                 // End...
  80.                 data = "--" + boundary + Crlf;
  81.                 dataBytes = Encoding.ASCII.GetBytes(data);
  82.                 memoryStream.Write(dataBytes, 0, dataBytes.Length);
  83.  
  84.                 // Prepare web connection...
  85.                 ServicePointManager.Expect100Continue = false;
  86.                 var webRequest = (HttpWebRequest)WebRequest.Create("http://www.imageshack.us/upload_api.php");
  87.                 webRequest.ContentType = "multipart/form-data; boundary=" + boundary;
  88.                 webRequest.Method = "POST";
  89.  
  90.                 // Посылаем запрос POST
  91.                 webRequest.ContentLength = memoryStream.Length;
  92.                 using (var requestStream = webRequest.GetRequestStream())
  93.                 {
  94.                     memoryStream.Seek(0, SeekOrigin.Begin);
  95.                     memoryStream.WriteTo(requestStream);
  96.                 }
  97.                
  98.                 try
  99.                 {
  100.                     var webResponse = webRequest.GetResponse();
  101.                     this.StreamResp = webResponse.GetResponseStream();
  102.                 }
  103.                 catch (WebException exception)
  104.                 {
  105.                     throw new WebException(exception.Message);
  106.                 }
  107.             }
  108.         }
Advertisement
Add Comment
Please, Sign In to add comment