Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- private Stream StreamResp
- {
- get;
- set;
- }
- /// <summary>Загрузка изображения на сервер</summary>
- /// <param name="pngImage">
- /// Искомое изображение
- /// </param>
- /// <exception cref="WebException">Возникает при ошибке отправки на сервер</exception>
- public override void UploadImage(Bitmap pngImage)
- {
- // Init
- var cultureInfo = CultureInfo.InvariantCulture;
- const string Filename = "picture.png";
- const string MimeType = "image/png";
- var imageFormat = ImageFormat.Png;
- // Prepare POST contents...
- using (var memoryStream = new MemoryStream())
- {
- // Parts boundary
- var boundary = "-------" + DateTime.Now.Ticks.ToString("x", cultureInfo);
- const string Crlf = "\r\n";
- // Image file...
- var data = "--" + boundary + Crlf;
- var dataBytes = Encoding.ASCII.GetBytes(data);
- memoryStream.Write(dataBytes, 0, dataBytes.Length);
- data =
- String.Format(
- cultureInfo,
- "Content-Disposition: form-data; name=\"fileupload\"; filename=\"{0}\"",
- Filename) + Crlf;
- dataBytes = Encoding.ASCII.GetBytes(data);
- memoryStream.Write(dataBytes, 0, dataBytes.Length);
- data = String.Format(cultureInfo, "Content-Type: {0}", MimeType) + Crlf;
- dataBytes = Encoding.ASCII.GetBytes(data);
- memoryStream.Write(dataBytes, 0, dataBytes.Length);
- memoryStream.Write(Encoding.ASCII.GetBytes(Crlf), 0, Crlf.Length);
- pngImage.Save(memoryStream, imageFormat);
- memoryStream.Write(Encoding.ASCII.GetBytes(Crlf), 0, Crlf.Length);
- // передаем ключ
- var parameters = new NameValueCollection
- {
- {
- "key",
- KeyDevelop
- }
- };
- foreach (var paramName in parameters.Keys)
- {
- var paramValue = parameters.Get(paramName.ToString());
- data = "--" + boundary + Crlf;
- dataBytes = Encoding.ASCII.GetBytes(data);
- memoryStream.Write(dataBytes, 0, dataBytes.Length);
- data = String.Format(cultureInfo, "Content-Disposition: form-data; name=\"{0}\"", paramName) + Crlf;
- dataBytes = Encoding.ASCII.GetBytes(data);
- memoryStream.Write(dataBytes, 0, dataBytes.Length);
- memoryStream.Write(Encoding.ASCII.GetBytes(Crlf), 0, Crlf.Length);
- data = paramValue;
- dataBytes = Encoding.ASCII.GetBytes(data);
- memoryStream.Write(dataBytes, 0, dataBytes.Length);
- memoryStream.Write(Encoding.ASCII.GetBytes(Crlf), 0, Crlf.Length);
- }
- // End...
- data = "--" + boundary + Crlf;
- dataBytes = Encoding.ASCII.GetBytes(data);
- memoryStream.Write(dataBytes, 0, dataBytes.Length);
- // Prepare web connection...
- ServicePointManager.Expect100Continue = false;
- var webRequest = (HttpWebRequest)WebRequest.Create("http://www.imageshack.us/upload_api.php");
- webRequest.ContentType = "multipart/form-data; boundary=" + boundary;
- webRequest.Method = "POST";
- // Посылаем запрос POST
- webRequest.ContentLength = memoryStream.Length;
- using (var requestStream = webRequest.GetRequestStream())
- {
- memoryStream.Seek(0, SeekOrigin.Begin);
- memoryStream.WriteTo(requestStream);
- }
- try
- {
- var webResponse = webRequest.GetResponse();
- this.StreamResp = webResponse.GetResponseStream();
- }
- catch (WebException exception)
- {
- throw new WebException(exception.Message);
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment