рдкреНрд░рд╕реНрддрд╛рд╡рдирд╛
рд╕рднреА рдХреЛ рдирдорд╕реНрдХрд╛рд░ред рдореИрдВрдиреЗ рдкрд╣рд▓реЗ рд╣реА рдПрдХ рдЫрд╡рд┐ рдбрд╛рдЙрдирд▓реЛрдбрд░ рдмрдирд╛рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд▓рд┐рдЦрд╛ рдерд╛ред рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ,
рдмреВрдЯрд▓реЛрдбрд░ рдлреНрд▓реИрд╢ рдкрд░ , рдлрд┐рд░
рдПрдЪрдЯреАрдПрдордПрд▓ 5 рдкрд░ ред рдмрд╛рдИ рдПрдВрдб рд▓рд╛рд░реНрдЬ, рдпреЗ рджреЛ рд╡рд┐рдХрд▓реНрдк рдкрд░реНрдпрд╛рдкреНрдд рд╣реИрдВред рдФрд░ рдпрджрд┐ рдЖрдк рддрд░реНрдХрд╕рдВрдЧрддрддрд╛ рдХреЗ рдкреНрд░рд╢рдВрд╕рдХ рд╣реИрдВ, рдФрд░ рд╡рд┐рд╖рдп рд╕реНрд╡рдпрдВ рд╡рд┐рд╢реЗрд╖ рд░реБрдЪрд┐ рдХрд╛ рдирд╣реАрдВ рд╣реИ, рддреЛ рдЖрдк рдЕрдм рдкрдврд╝ рдирд╣реАрдВ рд╕рдХрддреЗ рд╣реИрдВред
рдореИрдВ рд╕рд┐рд▓реНрд╡рд░рд▓рд╛рдЗрдЯ 4 рдкрд░ рдмреВрдЯрд▓реЛрдбрд░ рдХрд╛ рдХрд╛рдо рдХрд░рдиреЗ рдХрд╛ рдЙрджрд╛рд╣рд░рдг рдпрд╣рд╛рдВ рджреЗрддрд╛ рд╣реВрдВ:
рд╣рд╛рдВ, рдпрд╣ рдпрд╣рд╛рдВ рд╣реИ ред
рдореИрдВ рдЖрдкрдХреЛ рдХрд╛рд░реНрдп рдпрд╛рдж рджрд┐рд▓рд╛рддрд╛ рд╣реВрдВред рдЫрд╡рд┐рдпреЛрдВ рдХреЗ рдмреИрдЪ рдЕрдкрд▓реЛрдб рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдирд╛, рдХреНрд▓рд╛рдЗрдВрдЯ рдкрд░ рдЖрдХрд╛рд░ рджреЗрдирд╛, рд╕рд╛рде рд╣реА рд╕рд░реНрд╡рд░ рдкрд░ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреА рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд░рд╕реАрдж (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, php рдореЗрдВ $ _FILES рд╕рд░рдгреА рдореЗрдВ) рдЖрд╡рд╢реНрдпрдХ рд╣реИред рдЦреИрд░, рдПрдХ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдЗрдВрдЯрд░рдлрд╝реЗрд╕, рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗред
рдЕрдм рдЯреВрд▓рдХрд┐рдЯ рдкрд░ рдЪрд▓рддреЗ рд╣реИрдВред рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ, рд╣рдо Silverlight 4 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ .Net, рд╕реНрдерд┐рд░ рдЯрд╛рдЗрдкрд┐рдВрдЧ (рд╣рд╛рдБ, рдореБрдЭреЗ рдкрддрд╛ рд╣реИ, рдбрд╛рдпрдиреЗрдорд┐рдХ рдЯреИрдХреНрд╕реА) рдФрд░ рдПрдХ рд╢рд╛рдВрдд рдореБрдХреНрдд рд╕рдВрдкрд╛рджрдХ (Microsoft рд╡рд┐рдЬрд╝реБрдЕрд▓ рд╡реЗрдм рдбреЗрд╡рд▓рдкрд░ 2010 рдПрдХреНрд╕рдкреНрд░реЗрд╕) рдХреА рд╢рдХреНрддрд┐ рд╣реИред
рдЫрд╡рд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░реЗрдВ
рддреЛ рд╕реА #ред рдореБрдЭреЗ рднрд╛рд╖рд╛ рдкрд╕рдВрдж рд╣реИ (рдореИрдВрдиреЗ рдЗрд╕ рдкрд░ рдПрдХ рдбрд┐рдкреНрд▓реЛрдорд╛ рднреА рд▓рд┐рдЦрд╛ рд╣реИ), рд▓реЗрдХрд┐рди рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ, рдПрдХреНрд╢рдирд╕реНрдХреНрд░рд┐рдкреНрдЯ рдФрд░ php рдХреЗ рдмрд╛рдж рдпрд╣ рдмрд╣реБрдд рдкрд░рд┐рдЪрд┐рдд рдирд╣реАрдВ рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдпрд╣ рдЬрд▓реНрджреА рд╕реЗ рдЧреБрдЬрд░ рд░рд╣рд╛ рд╣реИред
рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреА рд╕реВрдЪреА рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ OpenFileDialog рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдлрд╝рд╛рдЗрд▓реЗрдВ рдЕрдкрд▓реЛрдб рдХрд░рдирд╛ рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рд╣реИ: FileStream рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЖрд╕рд╛рди рд╣реИред рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рд╕рд┐рд▓реНрд╡рд░рд▓рд╛рдЗрдЯ рдореЗрдВ рдбреЗрдЯрд╛ рд╣реИ, рдЕрдм рд╣рдореЗрдВ рдЗрд╕реЗ рдЫрд╡рд┐рдпреЛрдВ рдХреЗ рд░реВрдк рдореЗрдВ рдкреНрд░рд╕реНрддреБрдд рдХрд░рдиреЗ рдФрд░ рдлрд┐рд░ рдЖрдХрд╛рд░ рдмрджрд▓рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
рд╣реИрд░рд╛рдиреА рдХреА рдмрд╛рдд рд╣реИ рдХрд┐ рд╣рдо рдмрд┐рдЯрдореИрдк (рд░рд┐рдЯрд┐рдЯреЗрдмрд▓ рдмрд┐рдЯрдореИрдк) рдореЗрдВ рдбреЗрдЯрд╛ рдкреЗрд╢ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЖрдХрд╛рд░ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рддрд░реАрдХреЗ рдирд╣реАрдВ рд╣реИрдВ, рдФрд░ рдЗрд╕рд╕реЗ рднреА рдЕрдзрд┐рдХ рд╡рд╛рдкрд╕ рдкреАрдПрдирдЬреА рдпрд╛ рдЬреЗрдкреАрдИрдЬреА рдХреЗ рд▓рд┐рдП рдПрдиреНрдХреЛрдбрд┐рдВрдЧ рдХреЗ рд▓рд┐рдПред рдпрд╣ рд╕рдм, рдЬрд╝рд╛рд╣рд┐рд░ рд╣реИ, рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдпрд╣ рдПрдХ рдЕрд▓рдЧ рд▓реЗрдЦ рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд┐рд╖рдп рд╣реИ, рдЗрд╕ рддрд░рд╣ рдХреЗ рд╕рднреА рд╕рд╡рд╛рд▓реЛрдВ рдХреЛ рдХрдИ рдмрд╛рд░ рдЪрдмрд╛рдпрд╛ рдЧрдпрд╛, рдЬрд┐рд╕рдореЗрдВ рд╣реИрдмреЗ рднреА рд╢рд╛рдорд┐рд▓ рд╣реИред рдЗрд╕рд▓рд┐рдП, рд╣рдо рдПрдХ рдкреБрд╕реНрддрдХрд╛рд▓рдп рд▓реЗрддреЗ рд╣реИрдВ рдЬреЛ рдЕрдзрд┐рдХ рдЕрд╡рд╕рд░ рджреЗрдЧрд╛ред рдореИрдВрдиреЗ ImageTools рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ред рдЕрдкрдиреА рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ MyImage рдХреНрд▓рд╛рд╕ рд▓рд┐рдЦрд╛, рдЬреЛ рдХрд┐ рдореЗрд░реА рдЬрд╝рд░реВрд░рдд рдХреА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИ:
using System; using System.Net; using System.Windows; using System.IO; using System.Windows.Media.Imaging; using ImageTools; using ImageTools.IO.Bmp; using ImageTools.IO.Jpeg; using ImageTools.IO.Png; using ImageTools.Helpers; using ImageTools.Filtering; using ImageTools.IO; namespace Uploader.Libs { public class MyImage { private ExtendedImage im;
рддреЛ, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдЫрд╡рд┐рдпрд╛рдВ рд╣реИрдВ, рдЙрдирдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рд╣реИ, рдЕрдВрдд рдореЗрдВ рд╕рд░реНрд╡рд░ рдХреЛ рднреЗрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╛рдЗрдЯ [] рдХреА рдПрдХ рд╕рд░рдгреА рд╣реИред
рдЯреЛрдкреА
рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рд╕рд┐рд▓реНрд╡рд░рд▓рд╛рдЗрдЯ рдкрд░ рд╕рд░реНрд╡рд░ рдХреЗ рд╕рд╛рде рдмрд╛рддрдЪреАрдд рдПрдХ рдЕрд▓рдЧ рд▓реЗрдЦ рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд┐рд╖рдп рд╣реИ (рдореИрдВ рдЗрд╕реЗ рдЕрдзрд┐рдХ рд╕рдордЭреВрдВрдЧрд╛ рдФрд░ рд▓рд┐рдЦреВрдВрдЧрд╛, рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ)ред рдпрд╣ рдХрд╣рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реИ рдХрд┐ рдХреЗрд╡рд▓ рд╕рд░реНрд╡рд░ рдХреЗ рд▓рд┐рдП рдЪрд░ рдкрд╛рд░рд┐рдд рдХрд░рдирд╛ (рд╡реЗрдм тАЛтАЛрд╕реЗрд╡рд╛, рд╕рд╛рдмреБрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдмрд┐рдирд╛) рдЗрддрдирд╛ рд╕рд░рд▓ рдирд╣реАрдВ рд╣реИред рдирддреАрдЬрддрди, рдлреНрд▓реИрд╢ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рд╕реНрд╡рдпрдВ рдЕрдиреБрд░реЛрдз рд╣реЗрдбрд░ рдмрдирд╛рдирд╛ рд╣реЛрдЧрд╛, рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдлреЙрд░реНрдо рд╕рдмрдорд┐рд╢рди рдХрд╛ рдЕрдиреБрдХрд░рдг рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдкрд░рд┐рдгрд╛рдо рд╢реАрд░реНрд╖рдХ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдореЗрд░реА рдХрдХреНрд╖рд╛ рдХрд╛ рдПрдХ рдФрд░ рдкреБрдирд░реНрдЬрдиреНрдо рдерд╛:
using System; using System.Collections.Generic; using System.Text; using System.Windows.Browser; namespace Uploader.Libs { public class FormBuilder { private string BOUND; private string ENTER = "\r\n"; private string ADDB = "--"; UTF8Encoding encoding; private List<byte> Data; public string bound { get { return BOUND; } } public FormBuilder() { BOUND = getBoundary(); Data = new List<byte>(); encoding = new UTF8Encoding(); } public void addFile(string name, byte[] buffer) { string encode_name = HttpUtility.UrlEncode(name); StringBuilder header = new StringBuilder(); header.Append(ADDB + BOUND); header.Append(ENTER); header.Append("Content-Disposition: form-data; name='" + encode_name + "'; filename='" + encode_name + "'"); header.Append(ENTER); header.Append("Content-Type: application/octet-stream"); header.Append(ENTER); header.Append(ENTER); Data.AddRange(encoding.GetBytes(header.ToString())); Data.AddRange(buffer); Data.AddRange(encoding.GetBytes(ENTER)); } public void addParam(string name, string value) { StringBuilder header = new StringBuilder(); header.Append(ADDB + BOUND); header.Append(ENTER); header.Append("Content-Disposition: form-data; name='" + name + "'"); header.Append(ENTER); header.Append(ENTER); header.Append(value); header.Append(ENTER); Data.AddRange(encoding.GetBytes(header.ToString())); } public byte[] getForm() { StringBuilder header = new StringBuilder(); header.Append(ENTER); header.Append(ENTER); header.Append(ADDB + BOUND + ADDB); Data.AddRange(encoding.GetBytes(header.ToString())); byte[] formData = new byte[Data.Count]; Data.CopyTo(formData); return formData; } private string getBoundary() { string _boundary = ""; Random rnd = new Random(); for (int i = 0; i < 0x20; i++) { _boundary += (char)(97 + rnd.NextDouble() * 25); } return _boundary; } } }
asynchrony
рддреЛ рд╣рдо рд╕рдмрд╕реЗ рджрд┐рд▓рдЪрд╕реНрдк рдкрд░ рдЪрд▓реЗ рдЧрдПред рджрд░рдЕрд╕рд▓, рд╕рд░реНрд╡рд░ рдореЗрдВ рдбреЗрдЯрд╛ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдиреЗ рдФрд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рддрдВрддреНрд░ рдХреЗ рд▓рд┐рдПред рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рд╣рдореЗрдВ HttpWebRequest рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдЗрд╕ рд╡рд░реНрдЧ рдХреЗ рд╕рд╛рде рдФрд░ рдЪрд╛рдВрджреА рдХреЗ рдкреНрд░рдХрд╛рд╢ рдореЗрдВ рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреА рд╡рд┐рдЪрд╛рд░рдзрд╛рд░рд╛ рдЗрддрдиреА рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдпрд╣ рдХрд╛рд░реНрд░рд╡рд╛рдИ рдХреЗ рдЕрдиреБрдХреНрд░рдо рдХреЛ рдЪрд┐рддреНрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИ:
1) HttpWebRequest рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдмрдирд╛рдирд╛, рдЧрдВрддрд╡реНрдп url рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдирд╛, рд╡рд┐рдзрд┐ (рдкреЛрд╕реНрдЯ, рдЧреЗрдЯ), рд╣реЗрдбрд░ (рд╕рд╛рдордЧреНрд░реА-рдкреНрд░рдХрд╛рд░) рднреЗрдЬрдирд╛ред
2) рдЕрдЧрд▓рд╛, BeginGetRequestStream рд╡рд┐рдзрд┐ рдХреЛ рдХреЙрд▓ рдХрд░реЗрдВред рдЗрд╕ рд╡рд┐рдзрд┐ рдореЗрдВ 2 рдкреИрд░рд╛рдореАрдЯрд░ рд╣реИрдВред рдкрд╣рд▓рд╛ рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐ рд╣реИ, рдЬрд┐рд╕реЗ рдмреБрд▓рд╛рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рджреВрд╕рд░рд╛ рдЗрд╕ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд▓рд┐рдП рджрд┐рдП рдЧрдП рдкреИрд░рд╛рдореАрдЯрд░ рд╣реИрдВред рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рд╣рдореЗрдВ рдЗрд╕ рд╕реБрд╡рд┐рдзрд╛ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреНрдпреЛрдВ рд╣реИ? рдпрд╣ рд╕реНрдЯреНрд░реАрдо (рд╕реНрдЯреНрд░реАрдо) рддрдХ рдкрд╣реБрдВрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╣реИ, рдЬреЛ рд╕рд░реНрд╡рд░ рдХреЛ рдбреЗрдЯрд╛ рд▓рд┐рдЦрддрд╛ рд╣реИред рд╕реНрдЯреНрд░реАрдо EndGetRequestStream рд╡рд┐рдзрд┐ рджреНрд╡рд╛рд░рд╛ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рдпрд╣ рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рд╣реИ рдХрд┐ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдПрд╕рд┐рдВрдХреНрд░реЛрдирд╕рд▓реА рдФрд░ рдПрдХ рдЕрд▓рдЧ рд╕реНрдЯреНрд░реАрдо (рд╕реНрдЯреНрд░реАрдо рдХреЗ рд╕рд╛рде рднреНрд░рдорд┐рдд рдирд╣реАрдВ рд╣реЛрдирд╛) рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЕрд░реНрдерд╛рдд, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рддрдХ рдкрд╣реБрдВрдЪ рдирд╣реАрдВ рд╣реИред рдЗрд╕рд╕реЗ рдирд┐рдкрдЯрдиреЗ рдХреЗ рджреЛ рддрд░реАрдХреЗ рд╣реИрдВ: Dispatcher.BeginInvoke (рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдереНрд░реЗрдб рдореЗрдВ рдХрд┐рд╕реА рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЙрд▓ рдХрд░рдХреЗ) рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдпрд╛ рд╕рд┐рдВрдХреНрд░реЛрдирд╛рдЗрдЬрд╝реЗрд╢рди рдХреЙрдиреНрдЯреЗрдХреНрд╕реНрдЯ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ, рдкрд╣рд▓реЗ рдпреВрдЬрд╝рд░ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдереНрд░реЗрдб рдХреЗ рд▓рд┐рдП рд╕рд┐рдВрдХреНрд░рдирд╛рдЗрдЬрд╝реЗрд╢рди рд╕рдВрджрд░реНрдн рдХреЛ рд╕рд╣реЗрдЬреЗрдВ рдФрд░ рдлрд┐рд░ рдЖрд╡рд╢реНрдпрдХ рд╕реНрдерд╛рди рдкрд░ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЙрд▓ рдХрд░реЗрдВ, рдЬреЛ рдЗрд╕ рдереНрд░реЗрдб рдореЗрдВ рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рд░реВрдк рд╕реЗ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░реЗрдЧрд╛ред
3) рдЕрдЧрд▓рд╛, рд╣рдо рдХреЗрд╡рд▓ рд▓рд┐рдЦрдиреЗ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдбреЗрдЯрд╛ рд▓рд┐рдЦрддреЗ рд╣реИрдВ (рдЖрдк рддреБрд░рдВрдд рд▓реЛрдб рдХрд╛ рдкреНрд░рддрд┐рд╢рдд рдЯреНрд░реИрдХ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ)ред
4) рдЕрдЧрд▓рд╛, BeginGetResponse рд╡рд┐рдзрд┐ рдХреЗ рд▓рд┐рдП рдПрдХ рдХреЙрд▓, рдЬреЛ рд╕рд░реНрд╡рд░ рд╕реЗ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХрд╛ рдЕрдиреБрд░реЛрдз рдХрд░рддрд╛ рд╣реИред рд╡рд┐рдзрд┐ рдкреИрд░рд╛рдореАрдЯрд░ BeginGetRequestStream рдХреЗ рд╕рдорд╛рди рд╣реИрдВ, рдФрд░ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рднреА рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред
5) рдЗрд╕ рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ, рд╣рдореЗрдВ HttpWebResponse (HttpWebRequest рдСрдмреНрдЬреЗрдХреНрдЯ рдХреА EndGetResponse рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ) рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдорд┐рд▓рддрд╛ рд╣реИред
6) рдЖрдЧреЗ, рд╣рдореЗрдВ рдПрдХ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЗ рд╕рд╛рде рдПрдХ рдзрд╛рд░рд╛ рдорд┐рд▓рддреА рд╣реИ (рдЧреЗрдЯрдкреНрд░реЛрд╕реЗрд╕рд╕реНрдЯреНрд░реАрдо рд╡рд┐рдзрд┐ рдХреЛ HttpWebResponse рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рдХреЙрд▓ рдХрд░рдХреЗ)ред рдФрд░ рд╕реНрдЯреНрд░реАрдо рд╕реЗ рд╣рдореЗрдВ рдкрд╣рд▓реЗ рд╣реА рдЬрд╡рд╛рдм рдорд┐рд▓ рдЬрд╛рддрд╛ рд╣реИ (рд╕реНрдЯреНрд░реАрдорд░рдПрдбрд░ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗред ReadToEnd)ред
рдореИрдВ рд╕рдордЭрддрд╛ рд╣реВрдВ рдХрд┐ рд╕реНрдкрд╖реНрдЯреАрдХрд░рдг рдЕрдирд╛рдбрд╝реА рд╣реИ, рд▓реЗрдХрд┐рди рдореИрдВ рдПрдХ рдЕрд▓рдЧ рддрд░реАрдХреЗ рд╕реЗ рд╡рд┐рдлрд▓ рд░рд╣рд╛ред рдореБрдЭреЗ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдирдореВрдирд╛ рдХреЛрдб рд╕реНрдкрд╖реНрдЯ рд╣реЛрдЧрд╛ (рдареАрдХ рд╣реИ, рдХреБрдЫ рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ рднреА рдХреЛрдб рдореЗрдВ рдореМрдЬреВрдж рд╣реИрдВ):
SynchronizationContext sync;
рдРрд╕рд╛ рдбрд╛рдЙрдирд▓реЛрдб рд╣реИред рд▓реЗрдХрд┐рди рд╕рд░реНрд╡рд░ рдкрд░, рдХреБрдЫ рднреА рд╣рдореЗрдВ рдПрдХ рднреЛрдЬ рдФрд░ рдкрд░рд┐рдЪрд┐рдд рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╕реЗ рд░реЛрдХрддрд╛ рд╣реИ:
foreach($_FILES as $key => $value){ $filename = substr_replace($key, '.', -4, 1); move_uploaded_file($value['tmp_name'], "upload/". urldecode($filename)); } echo 'complete';
рд╡рд┐рдЪрд╛рд░
рд╕рд╡рд╛рд▓ рдпрд╣ рд╣реИ рдХрд┐, рдмреВрдЯрд▓реЛрдбрд░ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ (xaml рдпрд╛ html) рдХреИрд╕рд╛ рджрд┐рдЦрдирд╛ рдЪрд╛рд╣рд┐рдПред рдпрд╣рд╛рдВ рд╣рд░ рдХреЛрдИ рддрдп рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдЙрд╕реЗ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рдХреИрд╕реЗ рдкрд╕рдВрдж рд╣реИред рдореИрдВрдиреЗ html рдХреЗ рд░реВрдк рдореЗрдВ рдмрдирд╛рдпрд╛ред рдпрд╣реА рд╣реИ, рдлрд╝рд╛рдЗрд▓ рдЪрдпрди рд╕рдВрд╡рд╛рдж рдЦреЛрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдмрдЯрди, рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, рдЪрд╛рдВрджреА рдХреА рд░реЛрд╢рдиреА (рд╕реБрд░рдХреНрд╖рд╛ рдкреНрд░рддрд┐рдмрдВрдзреЛрдВ рдХреЗ рдХрд╛рд░рдг) рдкрд░ рд╣реИред рд▓реЗрдХрд┐рди рдмрд╛рдХреА рд╕рдм HTML рдореЗрдВ рд╣реИ (рдЫрд╡рд┐рдпреЛрдВ рдХреЗ рдкреВрд░реНрд╡рд╛рд╡рд▓реЛрдХрди рд╕рд╣рд┐рдд, рдореИрдВрдиреЗ рдЙрдиреНрд╣реЗрдВ рдмреЗрд╕ 64 рд░реВрдк рдореЗрдВ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд┐рдпрд╛ рд╣реИ)ред рдЕрджреНрднреБрдд рдПрдЪрдЯреАрдПрдордПрд▓ рдмреНрд░рд┐рдЬ рдХреНрд▓рд╛рд╕реЗрд╕ рдиреЗ рдореБрдЭреЗ рдЗрд╕рд╕реЗ рдорджрдж рджреА, рдЬрд┐рд╕рд╕реЗ рдореБрдЭреЗ рд╕рд┐рд▓реНрд╡рд░рд▓рд╛рдЗрдЯ рд╕реЗ рдбреЛрдо рдЯреНрд░реА рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рдорд┐рд▓реАред
рдпрд╣рд╛рдБ рдмреВрдЯрд▓реЛрдбрд░ рдбреЗрдореЛ рд╣реИ:


рдХреЛрд╖реНрдардХ рдХреЗ рдмрд╛рд╣рд░
рдореИрдВ рдПрдХ рд╣реА рд╡рд┐рд╖рдп рдкрд░ рдЙрддреНрдХреГрд╖реНрдЯ рд▓реЗрдЦреЛрдВ рдХреЗ рд▓рд┐рдП рдбреЗрдореЗрдЯреНрд░реЛрд╕
рд╣рдмреНрд░рд╛рдпреБрдЬрд╝рд░ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж рдХрд╣рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ, рд╕рд╛рде рд╣реА рд╕рд╛рде рд╣рдмреНрд░реБрдПрдЬрд╝рд░реНрд╕ рдЬреЛ рдореЗрд░реЗ рдкрд┐рдЫрд▓реЗ рд▓реЗрдЦреЛрдВ рдХреА рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдореЗрдВ рддреИрдпрд╛рд░ рд╕рдорд╛рдзрд╛рдиреЛрдВ рдХреЗ рд▓рд┐рдВрдХ рджрд┐рдП рдереЗред рдЬреЛ рд▓реЛрдЧ рдЗрд╕ рд╡рд┐рд╖рдп рдореЗрдВ рд░реБрдЪрд┐ рд░рдЦрддреЗ рд╣реИрдВ, рд╡реЗ рдЕрдкрдиреЗ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВред
рдирд╡ рд╡рд░реНрд╖ рдХреА рд╢реБрднрдХрд╛рдордирд╛рдПрдВ рдФрд░ рдореИрдВ рдЖрдкрдХреЗ рдХрд╛рдо рдХреЛ рдЖрдкрдХреЗ рд╢реМрдХ рдХрд╛ рдПрдХ рдирд┐рд░рдВрддрд░рддрд╛ рдмрдирдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ!