рд╡рд░реАрдпрддрд╛рдУрдВ рдФрд░ рдирд░реНрддрдХрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде HTML5 рдлрд╝рд╛рдЗрд▓ рдПрдкреАрдЖрдИ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдлрд╝рд╛рдЗрд▓реЗрдВ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░реЗрдВ

рдкреНрд░рд╕реНрддрд╛рд╡рдирд╛



рдлрд╝рд╛рдЗрд▓реЗрдВ рдЕрдкрд▓реЛрдб рдХрд░рдирд╛ рд╣рдореЗрд╢рд╛ рд╡реЗрдм рд╡рд┐рдХрд╛рд╕ рдореЗрдВ рдПрдХ рд╡рд┐рд╢реЗрд╖ рд╕реНрдерд╛рди рдкрд░ рдХрдмреНрдЬрд╛ рдХрд░ рд▓рд┐рдпрд╛ рд╣реИред

<рдЗрдирдкреБрдЯ рдкреНрд░рдХрд╛рд░ = рдлрд╝рд╛рдЗрд▓ /> рд╢реИрд▓рд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рд╕реНрдЯрд╛рдЗрд▓ рдХреА рдХрдард┐рдирд╛рдИ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╣реБрдд рдХреБрдЫ рдХрд╣рд╛ рдЬрд╛ рдЪреБрдХрд╛ рд╣реИред рдЖрдк рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдкрдврд╝ рд╕рдХрддреЗ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд▓рд┐рдВрдХ рдПрдХ , рджреЛ , рддреАрди , рдЪрд╛рд░ , рдкрд╛рдВрдЪ , рдЫрд╣ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ ред

рд▓реЗрдХрд┐рди рдлрд╝рд╛рдЗрд▓ рдЕрдкрд▓реЛрдб рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╕реНрд╡рдпрдВ рд╣реА рддреБрдЪреНрдЫ рдирд╣реАрдВ рд╣реИ, рдХрдИ рдЕрд▓рдЧ-рдЕрд▓рдЧ рддрд░реАрдХреЗ рд╣реИрдВ - рдФрд░ рдПрдХ рднреА рдЖрджрд░реНрд╢ рдирд╣реАрдВ рд╣реИред



рдореИрдВрдиреЗ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╣рдорд╛рд░реА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдлрд╛рдЗрд▓реЛрдВ рдкрд░ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд▓рд┐рдЦрд╛ рдерд╛ ред рдЫрд╣ рдорд╣реАрдиреЗ рдкрд╣рд▓реЗ mail.Ru рдЪрд╛рдВрджреА-рд▓реЛрдбрд░ред рдЙрд╕ рд╕рдордп, iframe, рдлреНрд▓реИрд╢, рд╕рд┐рд▓реНрд╡рд░рд▓рд╛рдЗрдЯ рдФрд░ рд╕рд╛рдорд╛рдиреНрдп рдлрд╝рд╛рдЗрд▓ рдЕрдкрд▓реЛрдб рдХрд╛ рд╕рдорд░реНрдерди рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рд▓реЗрдХрд┐рди рдкреНрд░рдЧрддрд┐ рдЕрднреА рднреА рд╕реНрдерд┐рд░ рдирд╣реАрдВ рд╣реИ, рдФрд░ рдЕрдм рд╕рднреА рдкреНрдпрд╛рд░реЗ рдмреНрд░рд╛рдЙрдЬрд╝рд░реЛрдВ рдХреЗ рдирд╡реАрдирддрдо рдмреАрдЯрд╛ рд╕рдВрд╕реНрдХрд░рдг рдкреВрд░реА рддрд░рд╣ рд╕реЗ HTML5 FileAPI рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддреЗ рд╣реИрдВ (рдирд┐рд╖реНрдкрдХреНрд╖рддрд╛ рдореЗрдВ, рдпрд╣ рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рд╣реИ, рд╣рдореЗрд╢рд╛ рдХреА рддрд░рд╣, рдЕрдЬреАрдмреЛрдЧрд░реАрдм рддрд░реАрдХреЗ рд╕реЗ рдХреБрдЫ рд╕рдорд░реНрдерди рдХрд░рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдиреАрдЪреЗ рдЙрд╕ рдкрд░ рдЕрдзрд┐рдХ)ред



рдЬрдм рд▓реЗрдЦ рд▓рд┐рдЦрд╛ рдЬрд╛ рд░рд╣рд╛ рдерд╛, рддреЛ Chrome 9 рдХреЛ рд╕реНрдерд┐рд░ рдФрд░ рдЬрдмрд░рджрд╕реНрддреА рдЕрдкрдбреЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ рдЬреЛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╕рдВрд╕реНрдХрд░рдг 8 рдХреЗ рдЗрдВрд╕реНрдЯреЙрд▓реЗрд╢рди рдХреЗ 75% рдкрд░ рдЕрдкрдбреЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рддреЛ, рд╣рдо рдкрд╣рд▓реЗ рд╕реНрдерд┐рд░ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХреЗ рд╕рд╛рде рдлрд╝рд╛рдЗрд▓ рдПрдкреАрдЖрдИ рд╕рдорд░реНрдерди рдХрд╛ рдЬрд╢реНрди рдордирд╛рддреЗ рд╣реИрдВ, рд╣реБрд░реНрд░реЗ!



рд╣рдордиреЗ рд╕реЛрдЪрд╛ рдерд╛ рдХрд┐ рдЗрд╕ рддрд░рд╣ рдХреА рддрдХрдиреАрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рдирд╛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рдЦрд┐рд▓рд╛рдл рдЕрдкрд░рд╛рдз рд╣реЛрдЧрд╛ред

рд╕реЛрдЪрд╛ - рдФрд░ рдореМрдЬреВрджрд╛ рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдПрдЪрдЯреАрдПрдордПрд▓ 5 рдбрд╛рдЙрдирд▓реЛрдб рдХреЛ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ред

рдирддреАрдЬрддрди, рд╣рдорд╛рд░реЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рдмрд╣реБрдд рд╕рд╛рд░реЗ рдЙрдкрд╣рд╛рд░ рдорд┐рд▓реЗ:

- рдХрдиреЗрдХреНрд╢рди рдмреНрд░реЗрдХ (рдФрд░ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдкреБрдирд░рд╛рд░рдВрдн!) рдХреЗ рдмрд╛рдж рдкрд╛рд░рджрд░реНрд╢реА рдкреБрдирдГ рд▓реЛрдб;

- рдХрддрд╛рд░ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░реЗрдВ;

- рдкреНрд░рдЧрддрд┐ рдмрд╛рд░ (рдореИрдХрдУрдПрд╕ рдФрд░ рд╕рдлрд╛рд░реА рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЕрдВрддрддрдГ рдХрд┐рд╕реА рднреА рд╡рд┐рджреЗрд╢реА рдкреНрд▓рдЧрдЗрдиреНрд╕ рдХреЗ рдмрд┐рдирд╛ рдкреНрд░рдЧрддрд┐ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ), рдХрддрд╛рд░ рд╕реЗ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рд╣рдЯрд╛рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдЕрдЧрд░ рд╡реЗ рдЕрдкрдирд╛ рджрд┐рдорд╛рдЧ рдмрджрд▓рддреЗ рд╣реИрдВред





рдлрд╝рд╛рдЗрд▓ рдПрдкреАрдЖрдИ рдХрд╛ рдЙрдкрдпреЛрдЧ рд╣рдо рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛрдб рд╕реЗ рдкреНрд░реЛрдЧреНрд░рд╛рдореЗрдЯрд┐рдХ рд░реВрдк рд╕реЗ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

1. рд╕рдВрд╡рд╛рдж рдореЗрдВ рдЪрдпрдирд┐рдд рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреА рдПрдХ рд╕реВрдЪреА рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ, рдЙрдирдХреЗ рдЖрдХрд╛рд░ рдФрд░ рдорд╛рдЗрдо рдкреНрд░рдХрд╛рд░ (рдЬреЛ, рд╡реИрд╕реЗ, рдкрд░ рдЧрд┐рдирд╛ рдирд╣реАрдВ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рдХреНрдпреЛрдВрдХрд┐ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рдХреБрдЫ рд▓реЛрдХрдкреНрд░рд┐рдп рдлрд╝рд╛рдЗрд▓ рдкреНрд░рдХрд╛рд░реЛрдВ рдХрд╛ рдирд┐рд░реНрдзрд╛рд░рдг рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ)ред

2. рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдореЗрдореЛрд░реА рд╕реЗ рдлрд╝рд╛рдЗрд▓ рдХреА рд╕рдВрдкреВрд░реНрдг рд╕рд╛рдордЧреНрд░реА рдХреЛ рд▓реЛрдб рдХрд┐рдП рдмрд┐рдирд╛ рдлрд╝рд╛рдЗрд▓ рд╕реЗ рдмрд╛рдЗрдЯреНрд╕ рдХреА рдЖрд╡рд╢реНрдпрдХ рд╕реАрдорд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ (рдлреНрд▓реИрд╢ рдФрд░ рдлрд╝рд╛рдпрд░рдлрд╝реЙрдХреНрд╕ 3 рдХреЗ рд╡рд┐рдкрд░реАрдд - рдиреЛрдЯ 1 рджреЗрдЦреЗрдВ)ред

3. рд╕рд░реНрд╡рд░ рдкрд░ рдкреВрд░реА рдлрд╛рдЗрд▓ рдФрд░ рдЙрд╕рдХреЗ рд╕реНрд▓рд╛рдЗрд╕ рджреЛрдиреЛрдВ рдХреЛ рдЕрдкрд▓реЛрдб рдХрд░реЗрдВред

4. рдПрдХ рдбреНрд░реИрдЧ-рдПрди-рдбреНрд░реЙрдк рдореЗрдВ рдлрд╛рдЗрд▓реЗрдВ рдЕрдкрд▓реЛрдб рдХрд░реЗрдВред

5. рдПрдХ рд╕рд╛рде (рд╕рдорд╛рдирд╛рдВрддрд░ рдореЗрдВ) рдХрдИ рдлрд╛рдЗрд▓реЗрдВ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░реЗрдВред

рдпрд╛рдиреА рд╣рдореЗрдВ рдлрд╝рд╛рдЗрд▓ рд╣реЗрд░рдлреЗрд░ рдХреЗ рд▓рд┐рдП рдХрд┐рд╕реА рднреА рдкреНрд▓рдЧрдЗрдиреНрд╕ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рдФрд░ рдпрд╣ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд╣реИ!



рдХрд╣рд╛рдиреА



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

рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдлрд╝рд╛рдЗрд▓реЗрдВ рдкрд░ рд▓реЛрдбрд░ рдХреЛрдб Mail.Ru рдкрд╣реБрдВрдЪ рдпреЛрдЧреНрдп рд╣реИ рдФрд░ рдмрд╛рдзрд┐рдд рдирд╣реАрдВ рд╣реИ рдФрд░ рдЗрд╕рдХрд╛ рдЕрдзреНрдпрдпрди рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдФрд░ рдЗрд╕рдХреА рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рд╕реЗ рдмрдВрдзрд╛ рд╣реБрдЖ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╣рдо рдПрдХ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд░реВрдк рдореЗрдВ рд╣рд▓реНрдХреЗ рдЕрдкрд▓реЛрдбрд░ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП рдЗрд╕ рд╢реБрджреНрдз рд░реВрдк рдореЗрдВ рдЗрд╕ рд▓реЛрдбрд┐рдВрдЧ рддрдВрддреНрд░ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВрдЧреЗред



рддреЛ рдЪрд▓рд┐рдП рдЬрд╛рдиреЗ ...



рд╣рдо onchange рд╣реИрдВрдбрд▓рд░ рдЗрдирдкреБрдЯ рдкрд░ рд▓рдЯрдХрд╛рддреЗ рд╣реИрдВред



oself.file_elm.onchange = function() { oself.onSelect(this); // 'this' is a DOM object here }
      
      







рдЗрдирдкреБрдЯ рдСрдмреНрдЬреЗрдХреНрдЯ рдПрдЪрдЯреАрдПрдордПрд▓ 5 рдХрдИ рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ рдЬреЛ рд╕рдВрд╡рд╛рдж рдореЗрдВ рдПрдХ рд╕рдордп рдореЗрдВ рдХрдИ рдлрд╛рдЗрд▓реЛрдВ рдХреЗ рдЪрдпрди рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ рдФрд░ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░реЗрдВ (рдиреЛрдЯ 2 рджреЗрдЦреЗрдВ), рдЬреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдорд╛рдЗрдо рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рд╕рдВрд╡рд╛рдж рдореЗрдВ рдлрд╛рдЗрд▓реЛрдВ рдХреЛ рдлрд╝рд┐рд▓реНрдЯрд░ рдХрд░рддрд╛ рд╣реИред



OnSelect рдореЗрдердб рдореЗрдВ, рд╣рдо рдлрд╛рдЗрд▓реНрд╕ рдРрд░реЗ рдХреЗ рдКрдкрд░ рдЬрд╛рддреЗ рд╣реИрдВ (рдЬрд┐рд╕рдореЗрдВ рдЪрдпрдирд┐рдд рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреА рдмреНрд░рд╛рдЙрдЬрд╝рд░-рдЬрдирд░реЗрдЯреЗрдб рд▓рд┐рд╕реНрдЯ рд╣реЛрддреА рд╣реИ), рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдкреНрд░реЙрдкрд░реНрдЯреАрдЬрд╝ рд╕реЗрдЯ рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рдкреНрд░рддреНрдпреЗрдХ рдлрд╛рдЗрд▓ рдХреЗ рд▓рд┐рдП onSelect рдИрд╡реЗрдВрдЯ рдЬрдирд░реЗрдЯ рдХрд░рддреЗ рд╣реИрдВред

рдЙрд╕рдХреЗ рдмрд╛рдж, рд╣рдо рдмрдЯрди рдХреЛ рдлрд┐рд░ рд╕реЗ рдмрдирд╛рддреЗ рд╣реИрдВ, рдЕрд░реНрдерд╛рддред рдЗрдирдкреБрдЯ рд╣рдЯрд╛рдПрдВ рдФрд░ рдЗрд╕реЗ рдлрд┐рд░ рд╕реЗ рдмрдирд╛рдПрдВред рдмрдЯрди рдХреЗ рдлреЙрд░реНрдо рдХреЗ рдЕрдВрджрд░ рд╣реЛрдиреЗ рдкрд░ рдорд╛рдорд▓реЗ рдореЗрдВ рд╕рд░реНрд╡рд░ рдХреЛ рдлреЙрд░реНрдо рднреЗрдЬрддреЗ рд╕рдордп рдЪрдпрдирд┐рдд рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдлрд┐рд░ рд╕реЗ рд▓реЛрдб рдХрд░рдиреЗ рд╕реЗ рд░реЛрдХрдиреЗ рдХреЗ рд▓рд┐рдП рдРрд╕рд╛ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рдбрд╛рдЙрдирд▓реЛрдб рдХреЗ рд╕рд░реНрдЬрдХ onSelect рдЗрд╡реЗрдВрдЯ рд╢реНрд░реЛрддрд╛ рд╣реИрдВ, рдЬреЛ рд▓реЛрдбрд░ рдСрдмреНрдЬреЗрдХреНрдЯ рдПрдиреНрдХреЗрдпреБрд╡реЗрдЯрд▓реЛрдб рдХреЗ рддрд░реАрдХреЗ рдХреЛ рдХреЙрд▓ рдХрд░рддреЗ рд╣реИрдВред



 /* n -    ,    file -    File idx -     cnt -       */ function onSelect(n, file, idx, cnt) { if(file.size > 1 * 1024 * 1024) { alert("File is too big!\nMaximum size is 1 MB."); return; } var d = document.createElement('div'); d.id = 'file_' + file.id + '_' + n; document.getElementById('file_list_' + n).appendChild(d); d.innerHTML = '<a href="#" id="file_' + file.id + '_cancel_' + n + '">X</a>' + file.name + ' (' + file.size + ') <span id="file_' + file.id + '_status_' + n + '">...</span>' document.getElementById('file_' + file.id + '_cancel_' + n).onclick = function() { window['up' + n].cancelUpload(file.id); return false; }; window['up' + n].enqueueUpload(file, 'http://lwu.no-ip.org/upload', "arg1=val1&arg2=val2"); }
      
      







EnqueueUpload рд╡рд┐рдзрд┐ рдлрд╝рд╛рдЗрд▓ рдХреЛ рд▓реЛрдбрд░ рдХреА рдЖрдВрддрд░рд┐рдХ рдХрддрд╛рд░ рдореЗрдВ рдЬреЛрдбрд╝рддрд╛ рд╣реИ, рдлрд╝рд╛рдЗрд▓ рдХреЛ рдлреНрд░рдВрдЯрдПрдВрдб рдХрддрд╛рд░ рдореЗрдВ рдЬреЛрдбрд╝рддрд╛ рд╣реИ (рдлреНрд░рдВрдЯрдПрдВрдб рдПрдХ рдЗрдХрд╛рдИ рд╣реИ рдЬреЛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рд╕рд╛рде рд╕рд╣рднрд╛рдЧрд┐рддрд╛ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЙрд╕реЗ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХрд╛ рдЪрдпрди рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рдЕрд░реНрдерд╛рдд рдпрд╛ рддреЛ рдЗрдирдкреБрдЯ, рдпрд╛ рдлреНрд▓реИрд╢ рдпрд╛ рд╕рд┐рд▓реНрд╡рд░рд▓рд╛рдЗрдЯ рдкреНрд▓рдЧрдЗрди) рдФрд░ startNextUpload рд╡рд┐рдзрд┐ рдХреЛ рдХреЙрд▓ рдХрд░рддрд╛ рд╣реИ, рдЬреЛ рдпрд╛ рддреЛ рддреБрд░рдВрдд рдпрджрд┐ рдкреНрд░рд╛рд░рдВрдн рдХреЗ рджреМрд░рд╛рди рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдПрдХ рд╣реА рд╕рдордп рдореЗрдВ рд▓реЛрдб рдХреА рдЧрдИ рд╣реИ, рддреЛ рдЗрд╕ рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдбрд╛рдЙрдирд▓реЛрдб рдкреНрд░рд╛рд░рдВрдн рдХрд░реЗрдВ рдпрд╛ рдЗрд╕реЗ рд╕реНрдердЧрд┐рдд рдХрд░ рджреЗрдВред



рдлреНрд░рдВрдЯрдПрдВрдб рдХрддрд╛рд░ рдореЗрдВ рдПрдХ рдлрд╝рд╛рдЗрд▓ рдЬреЛрдбрд╝рддреЗ рд╕рдордп, html5 рдлреНрд░рдВрдЯреЗрдВрдб рдлрд╝рд╛рдЗрд▓ рдХреЗ рдЕрджреНрд╡рд┐рддреАрдп рд╣реИрд╢ рдХреА рдЧрдгрдирд╛ рддрдВрддреНрд░ рд╢реБрд░реВ рдХрд░рддрд╛ рд╣реИ, рдЬрд┐рд╕рдХреА рд╕рд╣рд╛рдпрддрд╛ рд╕реЗ [рд╣реИрд╢] рдкреБрдирдГ рд▓реЛрдб рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╡рд┐рд╡рд░рдг рд▓реЗрдЦ рдореЗрдВ рд╕рд┐рд▓реНрд╡рд░рд▓рд╛рдЗрдЯ-рд▓реЛрдбрд░ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рд╣рд╛рдБ, Adler32 рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╣реИрд╢ рдХреА рдлрд┐рд░ рд╕реЗ рдЧрдгрдирд╛ рдХреА рдЬрд╛рддреА рд╣реИред



 oself.addFile = function(fo) { upFE_html5.superclass.addFile.apply(oself, [fo]); oself.calcChunkSize(fo); oself.calcFileHash(); // run calculation for next file };
      
      







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

рд╕реНрдерд╛рдиреАрдп рднрдВрдбрд╛рд░рдг (рдЙрд░реНрдл рд╡реЗрдмрд╕реНрдЯреЛрд░реЗрдЬ ) рдПрдХ рдФрд░ рдПрдЪрдЯреАрдПрдордПрд▓ 5 рддрддреНрд╡ рд╣реИ, рдЬреЛ рдЖрдкрдХреЛ рд╕рддреНрд░ рдХреА рдЕрд╡рдзрд┐ ( рд╕реЗрд╢рдирд╕реНрдЯреЛрд░ ) рдпрд╛ рд╕реНрдерд╛рдпреА рд░реВрдк рд╕реЗ ( рд▓реЛрдХрд▓рд╕реНрдЯреЛрд░реЗрдЬ ) рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреА рдУрд░ рд╕реЗ рдХреБрдВрдЬреА-рдореВрд▓реНрдп рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рдордирдорд╛рдирд╛ рдбреЗрдЯрд╛ рд╕реНрдЯреЛрд░ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред

рдЬрдм рдХрддрд╛рд░ рдлрд╝рд╛рдЗрд▓ рдбрд╛рдЙрдирд▓реЛрдб рддрдХ рдкрд╣реБрдВрдЪ рдЬрд╛рддреА рд╣реИ, рддреЛ рд╕реНрдЯрд╛рд░реНрдЯ-рд▓реЛрдб рдмреВрдЯрд▓реЛрдбрд░ рд╡рд┐рдзрд┐ рдХреЛ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреЛ рдСрдирд╕реНрдЯрд╛рд░реНрдЯ рдИрд╡реЗрдВрдЯ рдХреЛ рдЙрдард╛рддрд╛ рд╣реИ рдФрд░ рдбрд╛рдЙрдирд▓реЛрдб рд╢реБрд░реВ рдХрд░рддрд╛ рд╣реИред



 oself.startUpload = function(id, url, data) { var fo = oself.getFile(id); fo.url = url; // at this moment url already fetched from localStorage if info presents fo.data = data; fo.full_url = fo.url + (fo.url.match(/\?/) ? '&' : '?') + fo.data; fo.retry = oself.opts.maxChunkRetries; oself.broadcast('onStart', fo); oself.uploadFile(fo); };
      
      







UploadFile рд╡рд┐рдзрд┐ рдлрд╝рд╛рдЗрд▓ рдХреЛ рд╕реАрдзреЗ рд╕рд░реНрд╡рд░ рдкрд░ рдЕрдкрд▓реЛрдб рдХрд░рддреА рд╣реИред



 oself.uploadFile = function(fo) { oself.calcNextChunkRange(fo); var blob, simple_upload = 0; try { blob = fo.slice(fo.currentChunkStartPos, fo.currentChunkEndPos - fo.currentChunkStartPos + 1); } catch(e) { // Safari doesn't support Blob.slice method blob = new FormData(); blob.append('Filedata', fo); simple_upload = 1; }; fo.xhr = new XMLHttpRequest(); fo.xhr.onreadystatechange = function() { if(this.readyState == 4) { try { if(this.status == 201) { // chunk was uploaded succesfully var range = this.responseText; try { // getResponseHeader throws exception during cross-domain upload, but this is most reliable variant range = this.getResponseHeader('Range'); } catch(e) {}; if(!range) { throw new Error('No range in 201 answer'); } fo.uploadedRange = range; // store range for case of later retry fo.retry = oself.opts.maxChunkRetries; // restore retry counter userStorage.set(fo); // add or update file info in localStorage oself.uploadFile(fo); } else if(this.status == 200) { fo.responseText = this.responseText; fo.loaded = fo.size; // all bytes were uploaded userStorage.del(fo); // delete file info from localStorage oself.broadcast('onDone', fo, fo.responseText); } else if(this.status == 0 && fo.cancel == 1) { //t('Aborted uploading for id=' + fo.id); } else { throw new Error('Bad http answer code'); } } catch(e) { // any exception means that we need to retry upload oself.retryUpload(fo); }; } }; fo.xhr.open("POST", fo.full_url, true); fo.xhr.upload.onprogress = function(evt) { fo.loaded = (simple_upload ? 0 : fo._loaded) + evt.loaded; oself.broadcast('onProgress', fo); }; if(!simple_upload) { fo.xhr.setRequestHeader('Session-ID', fo.sessionID); fo.xhr.setRequestHeader('Content-Disposition', 'attachment; filename="' + encodeURI(fo.name) + '\"'); fo.xhr.setRequestHeader('Content-Range', 'bytes ' + fo.currentChunkStartPos + '-' + fo.currentChunkEndPos + '/' + fo.size); fo.xhr.setRequestHeader('Content-Type', 'application/octet-stream'); } fo.xhr.withCredentials = true; // allow cookies to be sent fo.xhr.send(blob); };
      
      







рдХреЛрдб рдореЗрдВ рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ рд╕рдлрд╛рд░реА рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рдПрдЪрдЯреАрдПрдордПрд▓ 5 рдлрд╝рд╛рдЗрд▓ рдПрдкреАрдЖрдИ рдХреЗ рд▓рд┐рдП рдЕрдзреВрд░рд╛ рд╕рдорд░реНрдерди рджрд┐рдЦрд╛рддреА рд╣реИрдВ (рдХрдо рд╕реЗ рдХрдо рд╡рд┐рдВрдбреЛрдЬ рдУрдПрд╕ рдкрд░), рдиреЛрдЯ рджреЗрдЦреЗрдВ 3ред

рдЬрдм рддреНрд░реБрдЯрд┐рдпрд╛рдВ рд╣реЛрддреА рд╣реИрдВ, рддреЛ RetryUpload рдкрджреНрдзрддрд┐ рдХреЛ рд▓реЙрдиреНрдЪ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреЛ рдмрд╛рд░-рдмрд╛рд░ рдлрд╝рд╛рдЗрд▓ рдХреЛ рдмреВрдЯрд▓реЛрдбрд░ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝реЗрд╢рди рдХреЗ рджреМрд░рд╛рди рдирд┐рд░реНрджрд┐рд╖реНрдЯ рд╕рдордп рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЛ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддрд╛ рд╣реИ, рдкреНрд░рддреНрдпреЗрдХ рд╡рд┐рдлрд▓рддрд╛ рдкрд░ рдкреНрд░рдпрд╛рд╕реЛрдВ рдХреЗ рдмреАрдЪ рдЕрдВрддрд░рд╛рд▓ рдХреЛ рдмрдврд╝рд╛рддрд╛ рд╣реИред

рдпрджрд┐ рдкреНрд░рдпрд╛рд╕реЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рд╕рдорд╛рдкреНрдд рд╣реЛ рдЬрд╛рддреА рд╣реИ, рддреЛ рдПрдХ рдСрдирд░рд░ рдШрдЯрдирд╛ рдЙрддреНрдкрдиреНрди рд╣реЛрддреА рд╣реИред



 oself.retryUpload = function(fo) { fo.retry--; if(fo.retry > 0) { var timeout = oself.opts.retryTimeoutBase * (oself.opts.maxChunkRetries - fo.retry); setTimeout(function(){oself.uploadFile(fo)}, timeout); } else { oself.broadcast('onError', fo. lwu.ERROR_CODES.OTHER_ERROR); } };
      
      







рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕ рд╕рднреА рдЪрдорддреНрдХрд╛рд░ рдХреЗ рд▓рд┐рдП, рдЕрдкрд▓реЛрдб рдореЙрдбреНрдпреВрд▓ рдХреЗ рд╕рд╛рде nginx рдХреЛ рд╕рд░реНрд╡рд░ рдкрд░ рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдереЛрдбрд╝рд╛ рдФрд░ рдкрд┐рдЫрд▓реЗ рд▓реЗрдЦ рдореЗрдВ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рдерд╛ред



рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рдПрдХ рдХреЗ рдмрд╛рдж ...



рдореИрдВ рдХреБрдЫ рд╡рд┐рдЪрд╛рд░ рд╡реНрдпрдХреНрдд рдХрд░рдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛:

1. рдлрд┐рд▓рд╣рд╛рд▓, рдлрд╛рдЗрд▓рдПрдкреАрдЖрдИ рдХреНрд░реЛрдо 8 рдФрд░ рдЗрд╕рдХреЗ рдмрд╛рдж рдХреЗ рд╕рдВрд╕реНрдХрд░рдг, рдлрд╝рд╛рдпрд░рдлрд╝реЙрдХреНрд╕ 4 рдмреАрдЯрд╛ рдФрд░ рдЖрдВрд╢рд┐рдХ рд░реВрдк рд╕реЗ рд╕рдлрд╛рд░реА 5 рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ ред рдореИрдВ InternetExplorer рдФрд░ рдУрдкреЗрд░рд╛ рдореЗрдВ рд╕рдорд░реНрдерди рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдЫ рдирд╣реАрдВ рдЬрд╛рдирддрд╛ред

рд╣рд╛рд▓рд╛рдБрдХрд┐, рд╣рдордиреЗ рдХрд╖реНрдЯрдкреНрд░рдж рдмрдЧ рдХреЗ рдХрд╛рд░рдг Chrome 8 рдХреЛ рдмрдВрдж рдХрд░ рджрд┐рдпрд╛, рдЬрд┐рд╕рдХреЗ рдХрд╛рд░рдг рд╕рдВрд╡рд╛рдж рдореЗрдВ рдХрдИ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХрд╛ рдЪрдпрди рдХрд░рдирд╛ рдЕрд╕рдВрднрд╡ рд╣реИред

рдлрд╝рд╛рдпрд░рдлрд╝реЙрдХреНрд╕ 3 рдЕрдкрдиреЗ рддрд░реАрдХреЗ рд╕реЗ рдлрд╛рдЗрд▓рдПрдкреАрдЖрдИ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ, рддрддреНрдХрд╛рд▓ рдЬрд░реВрд░реА рдлреЙрд░реНрдордбреИрдЯ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рд╕рдорд░реНрдерди рдирд╣реАрдВ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдмрдбрд╝реА рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдирд╛ рд╕рдВрднрд╡ рдирд╣реАрдВ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдлрд╝рд╛рдЗрд▓ рдХреА рд╕рдВрдкреВрд░реНрдг рд╕рд╛рдордЧреНрд░реА рдХреЛ рдХрдВрдкреНрдпреВрдЯрд░ рдореЗрдореЛрд░реА рдореЗрдВ рдкрдврд╝рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

2. рд╕реНрд╡реАрдХрд╛рд░ рд╡рд┐рд╢реЗрд╖рддрд╛ рдмрд╣реБрдд рдЕрдирд╛рдбрд╝реА рд░реВрдк рд╕реЗ рдХрд╛рдо рдХрд░рддреА рд╣реИ, рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХреЗрд╡рд▓ рдХрдИ рдорд╛рдЗрдо рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЛ рдирд╣реАрдВ рд╕рдордЭрддреЗ рд╣реИрдВред рдЗрд╕рд▓рд┐рдП, рдпрд╣ рдореЗрд░реЗ рд▓рд┐рдП рдПрдХ рд░рд╣рд╕реНрдп рдмрдирд╛ рд╣реБрдЖ рд╣реИ рдХрд┐ рдлрд╝рд┐рд▓реНрдЯрд░рд┐рдВрдЧ рдЗрд╕ рддрд░рд╣ рд╕реЗ рдХреНрдпреЛрдВ рдХреА рдЬрд╛рддреА рд╣реИ, рди рдХрд┐ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХреА рд╕реВрдЪреА рдХреЗ рдЕрдиреБрд╕рд╛рд░, рдЬреИрд╕рд╛ рдХрд┐ рдлреНрд▓реИрд╢ рдФрд░ рд╕рд┐рд▓реНрд╡рд░рд▓рд╛рдЗрдЯ рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

3. Safari рдмреНрд░рд╛рдЙрдЬрд╝рд░ FileReader рдСрдмреНрдЬреЗрдХреНрдЯ рдФрд░ Blob.slice рдкрджреНрдзрддрд┐ рдХреЛ рд▓рд╛рдЧреВ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП html5 рдкреБрдирдГ рд▓реЛрдб рдХрд░рдирд╛ рдЗрд╕рдореЗрдВ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдЪреВрдВрдХрд┐ рд░реАрд▓реЛрдбрд┐рдВрдЧ рдПрдХ рдмрд╣реБрдд рд╣реА рдЙрдкрдпреЛрдЧреА "рдмрди" рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╣рдордиреЗ рд╕рдлрд╛рд░реА рдореЗрдВ рд▓реЛрдбрд┐рдВрдЧ рд▓реЛрдбрд░реЛрдВ рдХреЗ рдХреНрд░рдо рдХреЛ рдмрджрд▓ рджрд┐рдпрд╛, рдЬрд┐рд╕рд╕реЗ рд╕рд┐рд▓реНрд╡рд░рд▓рд╛рдЗрдЯ рдЕрдзрд┐рдХ рдмреЗрд╣рддрд░ рд╣реЛ рдЧрдИред

4. рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдмрд┐рдЯрд╡рд╛рдЗрдЬрд╝ рдСрдкрд░реЗрд╢рдВрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп, рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдСрдкрд░реЗрдВрдбреНрд╕ рдХреЛ рд╣рд╕реНрддрд╛рдХреНрд╖рд░рд┐рдд рдЗрдВрдЯ 32 рдкреНрд░рдХрд╛рд░ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░рддрд╛ рд╣реИред рдФрд░ рдХрдм рд╕реЗ Adler32 рдЪреЗрдХрд╕рдо рдХреА рдЧрдгрдирд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдЕрд╣рд╕реНрддрд╛рдХреНрд╖рд░рд┐рдд рд╕рдВрдЦреНрдпрд╛рдУрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЖрдкрдХреЛ рдмрд╛рдИрдВ рдУрд░ рдХреА рдмрд┐рдЯ рд╢рд┐рдлреНрдЯ рдХреЛ рдЫреЛрдбрд╝рдирд╛ рд╣реЛрдЧрд╛ рдФрд░ 65536 рд╕реЗ рдЧреБрдгрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред

5. рдХреНрд▓рд╛рдЗрдВрдЯ рдкрд░ рдлрд╝рд╛рдЗрд▓ рдирд╛рдо рдХрд╛ URI- рдПрдиреНрдХреЛрдбрд┐рдВрдЧ рдХрд░рдирд╛ рдФрд░ рд╕рд░реНрд╡рд░ рдкрд░ рдбрд┐рдХреЛрдб рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдирд╛рдо рд╕рд╛рдордЧреНрд░реА-рд╡рд┐рд╡рд╛рдж рд╣реЗрдбрд░ рдореЗрдВ рдЖрддрд╛ рд╣реИ, рдФрд░ рд╣реЗрдбрд░ рдореЗрдВ рдорд╛рдирдХ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдЧреИрд░-рдПрдПрд╕рд╕реАрдЖрдИрдЖрдИ рдЕрдХреНрд╖рд░ рдирд╣реАрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред

6. рдлрд╛рдпрд░рдмрдЧ рдкреНрд▓рдЧ-рдЗрди рдпрд╛ рдЬреИрд╕реЗ рдХреЛ рдЕрдХреНрд╖рдо рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рдЪреЗрддрд╛рд╡рдиреА рджреЗрдирд╛ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВ, рдФрд░ рдпрд╣рд╛рдБ рдХреНрдпреЛрдВ рд╣реИ: рдиреЗрдЯрд╡рд░реНрдХ рдЯреИрдм рдкрд░ рдлрд╛рдпрд░рдмрдЧ рд╕рднреА рдиреЗрдЯрд╡рд░реНрдХ рдЧрддрд┐рд╡рд┐рдзрд┐ рдХреЛ рд▓реЙрдЧ рдХрд░рддрд╛ рд╣реИ рдФрд░ рд╕рднреА рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдмрдЪрд╛рддрд╛ рд╣реИ, рдФрд░ рддрдм рд╕реЗ рдЪреВрдБрдХрд┐ рд╣рдорд╛рд░реЗ рдЕрдиреБрд░реЛрдз рдЖрдХрд╛рд░ рдореЗрдВ рдЫреЛрдЯреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдкреНрд▓рдЧрдЗрди рдХрд╛ рдмрд┐рд▓реНрдЯ-рдЗрди рд▓рд┐рдорд┐рдЯрд░ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдмрдбрд╝реА рдлрд╝рд╛рдЗрд▓реЛрдВ рдкрд░ рд╣рдо рдмреНрд░рд╛рдЙрдЬрд╝рд░ рджреНрд╡рд╛рд░рд╛ рдмрд╣реБрдд рдЕрдзрд┐рдХ рдореЗрдореЛрд░реА рдЦрдкрдд рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред



рджрд┐рдорд┐рддреНрд░реА Dedyukhin, рдлрд╝рд╛рдЗрд▓реЗрдВ Mail.Ru рдХреЗ рдПрдХ рдкреНрд░рдореБрдЦ рдбреЗрд╡рд▓рдкрд░



All Articles