рдЕрдЪреНрдЫрд╛ рджрд┐рдиредрдореИрдВ Reactjs (рдХреНрд▓рд╛рдЗрдВрдЯ рд╕рд╛рдЗрдб) рдФрд░ Nodejs (рд╕рд░реНрд╡рд░ рд╕рд╛рдЗрдб) рдкрд░ рдбрд┐рдмреНрд░реАрдбрд┐рдВрдЧ рдЦрд░реНрдЪ рдХрд░рддрд╛ рд╣реВрдВ редрд╣рд╛рд▓ рд╣реА рдореЗрдВ, рдореЗрд░реА рдЫреЛрдЯреА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ, рд╕рд╡рд╛рд▓ рдпрд╣ рдЖрдпрд╛ рдХрд┐ рдХреИрд╕реЗ рдЖрд╕рд╛рдиреА рд╕реЗ рдФрд░ рд╕рд░рд▓ рд░реВрдк рд╕реЗ рдЯрд╛рдЗрдк рдХреНрд▓рд╛рдЗрдВрдЯ-рд╕рд░реНрд╡рд░ рдХреА рдЫрд╡рд┐рдпреЛрдВ рдХрд╛ рдЖрджрд╛рди-рдкреНрд░рджрд╛рди рд╕рдВрднрд╡ рд╣реИредрдЖрдЬ рд╣рдо рд╕реАрдЦреЗрдВрдЧреЗ рдХрд┐ рдЧреНрд░рд╛рд╣рдХ рдкрдХреНрд╖ рд╕реЗ рдмрд╛рдЗрдирд░реА рдбреЗрдЯрд╛ (рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдЪрд┐рддреНрд░) рдХреИрд╕реЗ рднреЗрдЬреЗрдВ рдФрд░ рдЙрдиреНрд╣реЗрдВ рд╕рд░реНрд╡рд░ рдкрд░ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░реЗрдВред рдмрд┐рд▓реНрд▓реА рдХреЗ рд▓рд┐рдП рдЖрдкрдХрд╛ рд╕реНрд╡рд╛рдЧрдд рд╣реИредрдпрджрд┐ рдЖрдкрдХрд╛ рд╡реЗрдм рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдПрдХ рд╕рд╛рдорд╛рдЬрд┐рдХ рдиреЗрдЯрд╡рд░реНрдХ рдпрд╛ рд╕рдВрджреЗрд╢рд╡рд╛рд╣рдХ рдпрд╛ рдХреБрдЫ рд╕рдорд╛рди рд╣реИ, рддреЛ рдЖрдкрдХреЛ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдмрд╛рдЗрдирд░реА рдбреЗрдЯрд╛ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛ рд╣реЛрдЧрд╛, рдЬреНрдпрд╛рджрд╛рддрд░ рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдпрд╣ рдЫрд╡рд┐ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рд╣реИред рдЗрд╕ рдкрд░ рдЪрд░реНрдЪрд╛ рд╣реЛрдЧреАредрдПрдХ рд╕рд╛рдорд╛рдиреНрдп рд╡рд┐рдЪрд╛рд░ рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП, рдореИрдВ рдЗрд╕реЗ рдХреНрд░рдорд┐рдХ рд░реВрдк рд╕реЗ рд╡реНрдпрд╛рдЦреНрдпрд╛ рдХрд░реВрдВрдЧрд╛редрдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкрд░ рдПрдХ рдирдЬрд╝рд░ рдбрд╛рд▓реЗрдВ
- рдмрд╛рдЗрдирд░реА рдирдВрдмрд░ рд╕рд┐рд╕реНрдЯрдо рдФрд░ рджрд╢рдорд▓рд╡ рд╕рдВрдЦреНрдпрд╛ рдкреНрд░рдгрд╛рд▓реА
- рдХреЛрдб рдкреЗрдЬ : ASCII , рдпреВрдирд┐рдХреЛрдб
- рдмрд┐рдЯ рдФрд░ рдмрд╛рдЗрдЯ
- рд╣реЗрдХреНрд╕ рд╕реНрд╡рд░реВрдк
- рдмрд╛рдЗрдирд░реА рдлрд╝рд╛рдЗрд▓
- рдмрдлрд░ рдФрд░ рдиреЛрдбрдЬ рдереНрд░реЗрдбреНрд╕
- ArrayBuffer рдФрд░ Uint8Array
- FileReader
рдмрд╛рдЗрдирд░реА рдирдВрдмрд░ рд╕рд┐рд╕реНрдЯрдо рдФрд░ рджрд╢рдорд▓рд╡ рд╕рдВрдЦреНрдпрд╛ рдкреНрд░рдгрд╛рд▓реАред
рдпрд╣ рдПрдХ рд╕рдВрдЦреНрдпрд╛ рд╣реИ рдЬреЛ рджреЛ рдЕрдХреНрд╖рд░реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд▓рд┐рдЦреА рдЧрдИ рд╣реИ: рдПрдХ рдФрд░ рд╢реВрдиреНрдпредрд╕рд░рд▓ рд╢рдмреНрджреЛрдВ рдореЗрдВ, рдпрд╣ n рдХреА рд╢рдХреНрддрд┐ (рдЕрдВрдХреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛) рд╕реЗ 2 (рдЖрдзрд╛рд░) рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╕рдВрдЦреНрдпрд╛ 10001 рдореЗрдВ 5 рдЕрдВрдХ рд╣реИрдВ:4 рдЕрдВрдХ = 1; 2 ^ 4 = 16;3 рдЕрдВрдХ = 0;2 рдЕрдВрдХ = 0;1 рдЕрдВрдХ = 0;0 рдЕрдВрдХ = 1; 2 ^ 0 = 1;1-рд╕рдЪ - рдПрдХ рдЧрдгрдирд╛ рдХрд░реЗрдВ;0-рдЕрд╕рддреНрдп - рдЧрдгрдирд╛ рди рдХрд░реЗрдВ;рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рд╣рдореЗрдВ 16 + 1 = 17 рдорд┐рд▓рддрд╛ рд╣реИ;рд░рд┐рд╡рд░реНрд╕ рдСрдкрд░реЗрд╢рди рдХреЗ рд╕рд╛рде, рдХрдВрдкреНрдпреВрдЯрд░ рдбреЗрдЯрд╛ рдХреЛ рдмрд╛рдЗрдирд░реА рд░реВрдк рдореЗрдВ рдкреНрд░рд╕реНрддреБрдд рдХрд░рддрд╛ рд╣реИредconst num = 17;
const binNum = num.toString(2);
const initNum = parseInt(binNum, 2);
рджрд╢рдорд▓рд╡ рд╕рдВрдЦреНрдпрд╛ рдкреНрд░рдгрд╛рд▓реА рдПрдХ рд╕рдВрдЦреНрдпрд╛ рд╣реИ рдЬреЛ 10 рд╡рд░реНрдгреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд▓рд┐рдЦреА рдЬрд╛рддреА рд╣реИ, 0 рд╕реЗ - 9. рд╣рдо рд╣рд░ рд░реЛрдЬ рдЙрдирдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВредрддрдереНрдп рдпрд╣ рд╣реИ рдХрд┐ рдПрдХ рдХрдВрдкреНрдпреВрдЯрд░ рдЬрд╛рдирдХрд╛рд░реА рдХреА рдЕрдкрдиреА рдкреНрд░рд╕реНрддреБрддрд┐ рдХреЗ рджреНрд╡рд╛рд░рд╛ рд░рд╣рддрд╛ рд╣реИред рдпрджрд┐ рд╣рдо рдЕрдкрдиреА рдореВрд▓ рднрд╛рд╖рд╛ рдореЗрдВ рд▓рд┐рдЦрддреЗ рд╣реИрдВ рдпрд╛ рджрд╢рдорд▓рд╡ рдореЗрдВ рдЧрдгрдирд╛ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдХрдВрдкреНрдпреВрдЯрд░ рдХреЗ рд▓рд┐рдП рдпрд╣ рд╕рдм рдПрдХ рджреНрд╡рд┐рдЖрдзрд╛рд░реА рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рд╣реИред рдЖрдк рдкреВрдЫрддреЗ рд╣реИрдВ: "рдмрд╛рдЗрдирд░реА рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд╛ рдХреНрдпрд╛ рдорддрд▓рдм рд╣реИ?"ред рдЬреИрд╕рд╛ рдХрд┐ рдореЗрд░реЗ рдЕрдВрдЧреНрд░реЗрдЬреА рд╢рд┐рдХреНрд╖рдХ рдиреЗ рдХрд╣рд╛, "рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рдЗрд╕реЗ рд╕реБрдирддреЗ рд╣реИрдВ, рдпрд╣ рд▓рд┐рдЦрд┐рдд рд╣реИ" рдХрдВрдкреНрдпреВрдЯрд░ рдкрд╛рда рдпрд╛ рдЕрдиреНрдпрдерд╛, рдпрд╛ рдмрд╛рдЗрдирд░реА рдирдВрдмрд░ рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рдХрд┐рд╕реА рднреА рдЧрдгрдирд╛ рд╡рд╛рд▓реА рдлрд╛рдЗрд▓реЗрдВ рдкреНрд░рд╕реНрддреБрдд рдХрд░рддрд╛ рд╣реИ - рдпрд╣ рдмрд╛рдЗрдирд░реА рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рд╣реИред рдорд╢реАрди рдХреА рднрд╛рд╖рд╛, рд╕рдВрдЦреНрдпрд╛ "17" рд╣реИ - 10001редрдХреЛрдб рдкреЗрдЬ: ASCII, рдпреВрдирд┐рдХреЛрдб
рд╕рд╡рд╛рд▓ рдЙрдарддрд╛ рд╣реИред рдпрд╣ рд╕рдВрдЦреНрдпрд╛рдУрдВ рдХреЗ рд╕рд╛рде рд╕реНрдкрд╖реНрдЯ рд╣реИ, рд▓реЗрдХрд┐рди рдкрд╛рда рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреНрдпрд╛? рдорд╢реАрди рдЯреЗрдХреНрд╕реНрдЯ рдХреЛ рдмрд╛рдЗрдирд░реА рдореЗрдВ рдХреИрд╕реЗ рдмрджрд▓реЗрдЧреА? рд╕рдм рдХреБрдЫ рд╕рд░рд▓ рд╣реИред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, ASCII рдпрд╛ рдпреВрдирд┐рдХреЛрдб рдЬреИрд╕реЗ рдПрдирдХреЛрдбрд┐рдВрдЧ рд╣реИрдВред рдпрд╣ рдПрдХ рд╕рд╛рдзрд╛рд░рдг рддрд╛рд▓рд┐рдХрд╛ ( рдХреЛрдб рдкреЗрдЬ ) рд╣реИ, рдЬрд╣рд╛рдВ рд╣рдорд╛рд░реЗ рдЪрд░рд┐рддреНрд░ рд╕рдВрдЦреНрдпрд╛ рдХреЗ рд▓рд┐рдП рдореИрдкрд┐рдВрдЧ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЪрд░рд┐рддреНрд░ "S" ASCII рддрд╛рд▓рд┐рдХрд╛ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рд╕рдВрдЦреНрдпрд╛ 53 рд╣реИ, рдлрд┐рд░ рдХрдВрдкреНрдпреВрдЯрд░ 53 рдирдВрдмрд░ рдХреЛ рдмрд╛рдЗрдирд░реА рд░реВрдк рдореЗрдВ рдкреНрд░рд╕реНрддреБрдд рдХрд░реЗрдЧрд╛ - 110101редрдпреВрдирд┐рдХреЛрдб рдХреЗ рд╕рдВрдмрдВрдз рдореЗрдВ, рдпрд╣ рдПрдХ рд╢рдХреНрддрд┐рд╢рд╛рд▓реА рдорд╛рдирдХ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реИ UTF-8 рдПрдиреНрдХреЛрдбрд┐рдВрдЧ, рдЬреЛ рд╡реЗрдм-рд╕реНрдкреЗрд╕ рдФрд░ рдпреВрдирд┐рдХреНрд╕ рдЬреИрд╕реА рдкреНрд░рдгрд╛рд▓рд┐рдпреЛрдВ рдореЗрдВ рдмрд╣реБрдд рдорд╛рдВрдЧ рд╣реИред рдСрдкрд░реЗрд╢рди рдХрд╛ рд╕рд┐рджреНрдзрд╛рдВрдд рд╕рд╛рдорд╛рдиреНрдп рд╣реИредрдмрд┐рдЯ рдФрд░ рдмрд╛рдЗрдЯ
рдПрдХ рдмрд┐рдЯ рдХрдВрдкреНрдпреВрдЯрд░ рджреНрд╡рд╛рд░рд╛ рд╕реВрдЪрдирд╛ рдХреЗ рдорд╛рдкрди рдХреА рдПрдХ рдЗрдХрд╛рдИ рд╣реИред рдФрд░ рд╣рдо рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рдХрдВрдкреНрдпреВрдЯрд░ рдЬрд╛рдирдХрд╛рд░реА рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХреИрд╕реЗ рдХрд░рддрд╛ рд╣реИред рд╣рд╛рдБ! рдЖрдк рд╕рд╣реА рд╣реЗред рдПрдХ рдмрд┐рдЯ 1 рдпрд╛ 0. рд╣реИ рдХрдВрдкреНрдпреВрдЯрд░ рдХреЗ рд▓рд┐рдП, 1 рдпрд╛ 0 рдПрдХ рдЯреНрд░рд╛рдВрдЬрд┐рд╕реНрдЯрд░ рдХреА рддрд░рд╣ рдХреБрдЫ рд╣реИ, рд╕рдЪ рдпрд╛ рдЧрд▓рддред рдЕрдм рдпрд╣ рд╕рдордЭрдирд╛ рдореБрд╢реНрдХрд┐рд▓ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдмрд╛рдЗрдЯ рдХреНрдпрд╛ рд╣реИ - рдпрд╣ 8 рдмрд┐рдЯреНрд╕ рд╣реИ, рдЗрд╕реЗ рдПрдХ рдУрдХрдЯреЗрдЯ рднреА рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ (рдкреНрд░рдХрд╛рд░ рдХреЗ 8 рд╣реЛрддреЗ рд╣реИрдВ)редрд╣реЗрдХреНрд╕ рд╕реНрд╡рд░реВрдк
рд╣рдо "рд╣реЗрдХреНрд╕" рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рдкрд╛рд╕ рд╣реЛрддреЗ рд╣реИрдВред рд╣рдордиреЗ рдмрд╛рдЗрдирд░реА рдирдВрдмрд░ рд╕рд┐рд╕реНрдЯрдо, рджрд╢рдорд▓рд╡ рдкреНрд░рдгрд╛рд▓реА рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХреА, рдЕрдиреНрдп рдмрд╛рддреЛрдВ рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдПрдХ рд╣реЗрдХреНрд╕рд╛рдбреЗрд╕рд┐рдорд▓ рд╕рдВрдЦреНрдпрд╛ рдкреНрд░рдгрд╛рд▓реА рд╣реИ, рдЯрд╛рдЗрдкрд╕реЗрдЯрд░реНрд╕ рд╕рдордЭреЗрдВрдЧреЗ рдХрд┐ рдореЗрд░рд╛ рдХреНрдпрд╛ рдорддрд▓рдм рд╣реИред рдпрд╣ рдПрдХ рд╕рдВрдЦреНрдпрд╛ рд╣реИ рдЬрд┐рд╕реЗ 16 рд╡рд░реНрдгреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рд╣реИ, 0 рд╕реЗ - 9 рдФрд░ рдКрдкрд░ рд╕реЗред рд╕рд╡рд╛рд▓ рдЙрдарддрд╛ рд╣реИ: "рдпрд╣ рдЗрддрдирд╛ рдЬрдЯрд┐рд▓ рдХреНрдпреЛрдВ рд╣реИ?"ред рдЪреВрдВрдХрд┐ рдореЗрдореЛрд░реА рдХреА рдЗрдХрд╛рдИ 8-рдмрд┐рдЯ рдмрд╛рдЗрдЯ рд╣реИ, рдлрд┐рд░ рднреА рджреЛ рд╣реЗрдХреНрд╕рд╛рдбреЗрд╕рд┐рдорд▓ рдЕрдВрдХреЛрдВ рдореЗрдВ рдЗрд╕рдХреЗ рдореВрд▓реНрдп рдХреЛ рд▓рд┐рдЦрдирд╛ рдЕрдзрд┐рдХ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдпреВрдирд┐рдХреЛрдб рдорд╛рдирдХ рдореЗрдВ, рд╡рд░реНрдг рд╕рдВрдЦреНрдпрд╛ рдЖрдорддреМрд░ рдкрд░ рдХрдо рд╕реЗ рдХрдо 4 рдЕрдВрдХреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╣реЗрдХреНрд╕рд╛рдбреЗрд╕рд┐рдорд▓ рд░реВрдк рдореЗрдВ рд▓рд┐рдЦреА рдЬрд╛рддреА рд╣реИредрдпрд╣ рдкреНрд░рд╛рд░реВрдк рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ: 8-рдмрд┐рдЯ рдмрд╛рдЗрдЯ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдпрд╣ рд▓рд┐рдВрдЧ рджреНрд╡рд╛рд░рд╛ 8 рдмрд┐рдЯреНрд╕ рдХреЛ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░рддрд╛ рд╣реИ, рдЕрд░реНрдерд╛рдд, 10101011 - 1010 | 1011, рдкреНрд░рддреНрдпреЗрдХ рднрд╛рдЧ рдХреЛ рддрджрдиреБрд╕рд╛рд░ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░рддрд╛ рд╣реИред 1010-рдП, 1011-рдмреА;const num = 196;
const hexNum = num.toString(16);
const initNum = parseInt(hexNum, 16);
рдмрд╛рдЗрдирд░реА рдлрд╝рд╛рдЗрд▓
рд╣рдо рдЕрдЧрд▓реЗ рдЖрдЗрдЯрдо рдкрд░ рдЬрд╛рддреЗ рд╣реИрдВ, рдЗрд╕реЗ рдмрд╛рдЗрдирд░реА рдлрд╝рд╛рдЗрд▓ рднреА рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ - рдпрд╣ рдмрд╛рдЗрдЯреНрд╕ рдХреА рдПрдХ рд╕рд░рдгреА рд╣реИред рдмрд╛рдЗрдирд░реА рдХреНрдпреЛрдВ рд╣реИ? рдмрд╛рдЗрдЯреНрд╕ рдореЗрдВ рдмрд┐рдЯреНрд╕ рд╣реЛрддреЗ рд╣реИрдВ, рдЬреЛ рдХрд┐ рдПрдХ рдмрд╛рдЗрдирд░реА рдирдВрдмрд░ рд╕рд┐рд╕реНрдЯрдо рдХреЗ рдЕрдХреНрд╖рд░ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдирд╛рдо рдмрд╛рдЗрдирд░реА рд╣реИред рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕рднреА рдлрд╛рдЗрд▓реЗрдВ рдмрд╛рдЗрдирд░реА рдлрд╛рдЗрд▓ рдХреА рд╢реНрд░реЗрдгреА рдореЗрдВ рдлрд┐рдЯ рд╣реЛрддреА рд╣реИрдВ, рдЕрд░реНрдерд╛рддреН, рдлрд╛рдЗрд▓реЗрдВ, рдЪрд┐рддреНрд░ рдпреБрдХреНрдд рдлрд╛рдЗрд▓реЗрдВ - рдпреЗ рд╕рднреА рдмрд╛рдЗрдирд░реА рдлрд╛рдЗрд▓реЗрдВ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдмрд╛рдЗрдирд░реА рдбреЗрдЯрд╛, рдЗрд╕рд▓рд┐рдП рдмрд╛рдЗрдирд░реА рдбреЗрдЯрд╛редрдЕрдХреНрд╕рд░ рджреНрд╡рд┐рдЖрдзрд╛рд░реА рдбреЗрдЯрд╛ ASCII рдХреЛрдб рдкреЗрдЬ рд╡рд░реНрдгреЛрдВ рдХреЗ рд╕рд╛рде-рд╕рд╛рде рд╣реЗрдХреНрд╕ рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рд╡рд┐рд╢реЗрд╖ рдЫрд╡рд┐рдпреЛрдВ рдореЗрдВ рдЖрдЙрдЯрдкреБрдЯ рд╣реЛрддрд╛ рд╣реИред рдореИрдВ рдПрдХ рдЙрджрд╛рд╣рд░рдг рджреВрдВрдЧрд╛ред рд╣рдорд╛рд░реА рдирд┐рдореНрди рдЫрд╡рд┐ рд╣реИ:рд▓рдЧрд╛рд╡ рджреЗрдЦреЛ рдЗрд╕рдХрд╛ рдЖрдВрд╢рд┐рдХ рджреГрд╢реНрдп рд╣реЗрдХреНрд╕-рдПрдЬреЗрдВрдЯ-рд╕реНрдорд┐рде рдХреЗ рд░реВрдк рдореЗрдВ рджрд░реНрд╢рд╛рдпрд╛ рдЧрдпрд╛ рд╣реИрд▓рдЧрд╛рд╡ рджреЗрдЦреЛ
ASCII, hex , .
ArrayBuffer рдФрд░ Uint8Array
ArrayBuffer - рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдмрд╛рдЗрдирд░реА рдбреЗрдЯрд╛ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдСрдмреНрдЬреЗрдХреНрдЯред рдмрд╛рдЗрдирд░реА рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдореЗрдореЛрд░реА рдХреА рд▓рдВрдмрд╛рдИ рдХреЛ рдареАрдХ рдХрд░рддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП: рдирдпрд╛ ArrayBuffer (256) - 256 рдмрд╛рдЗрдЯреНрд╕ рдХреЗ рдЖрдХрд╛рд░ рдХреЗ рд╕рд╛рде рдПрдХ рд╕рд░рдгреА рдЬреИрд╕реА рд╡рд╕реНрддреБ рдмрдирд╛рддрд╛ рд╣реИ, рдФрд░ рдирд╣реАрдВ - рдХрдо рдирд╣реАрдВред рдкреНрд░рддреНрдпреЗрдХ рдмрд╛рдЗрдЯ рдореЗрдВ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЬрд╛рдирдХрд╛рд░реА рд╣реЛрддреА рд╣реИред ArrayBuffer рдПрдХ рд╕рд░рдгреА рдирд╣реАрдВ рд╣реИ рдФрд░ рд╕рд░рдгреА рд╡рд┐рдзрд┐рдпрд╛рдБ рдЗрд╕рдХреЗ рд▓рд┐рдП рд▓рд╛рдЧреВ рдирд╣реАрдВ рд╣реИрдВред рдЖрдк рдПрдХ рдкреНрд░рд╢реНрди рдкреВрдЫреЗрдВ, рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреИрд╕реЗ рдХрд░реЗрдВ? Uint8Array рдСрдмреНрдЬреЗрдХреНрдЯ рдПрдХ рдЕрд╣рд╕реНрддрд╛рдХреНрд╖рд░рд┐рдд 8-рдмрд┐рдЯ рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ ArrayBuffer рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рджреЗрддрд╛ рд╣реИ , рдЬреЛ рдХрд┐ 0 - 255 рд╕реЗ рд╣реИредFileReader
FileReader ? рдпрд╣ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдирд┐рд░реНрдорд╛рддрд╛ рд╣реИ:<input type="file">
рдЖрдЧреЗ рдХреНрдпрд╛ рд╣реЛрдЧрд╛?
рдЕрдм рдПрдХ рдорд╣рд╛рди рдЙрджрд╛рд╣рд░рдг рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ рдЬреЛ рдЫрд╡рд┐ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИ:- рд░рд┐рдПрдХреНрдЯрдЬрд╕ рдореЙрдбреНрдпреВрд▓
import React, {useState, useRef, useCallback} from 'react';
import axios from 'axios';
export const UPLOAD_AVATAR = 'http://localhost:8080/api/upload_avatar';
function App() {
const fileRef = useRef(null);
const [ loading, setLoading ] = useState(false);
const handleSubmit = useCallback( event => {
event.preventDefault();
const fetchData = async (uint8Array) => {
try {
const response = await axios({
method: 'post',
url: UPLOAD_AVATAR,
data: [...uint8Array]
});
setLoading(false);
console.log(response);
} catch (e) {
console.error(e.message, 'function handleSubmit')
}
};
if(!fileRef.current) return void null;
const reader = new FileReader();
reader.onloadend = () => {
const uint8Array = new Uint8Array(reader.result);
setLoading(true);
fetchData(uint8Array);
};
reader.readAsArrayBuffer(fileRef.current[0]);
}, []);
const nodeDom = (
<form onSubmit={handleSubmit}>
<div>
<input
onChange={e => fileRef.current = e.target.files}
accept="image/*"
type="file"
id="button-file"
/>
</div>
<button type="submit">{loading ? '...' : ''}</button>
</form>
);
return nodeDom
}
export default App;
- рдПрдХреНрд╕рдкреНрд░реЗрд╕рдЬреЗрдПрд╕ рдореЙрдбреНрдпреВрд▓
const express = require("express");
const cors = require("cors");
const crypto = require('crypto');
const fs = require('fs');
const PORT = 8080;
const app = express();
app.use(express.static("public"));
app.use(express.json({ limit: "50mb" }));
app.use(cors());
app.post("/api/upload_avatar", (req, res) => {
console.log(req.body);
const randomString = crypto.randomBytes(5).toString('hex');
const stream = fs.createWriteStream(`./public/images/${randomString}.png`);
stream.on('finish', function () {
console.log('file has been written');
res.end('file has been written');
});
stream.write(Buffer.from(req.body), 'utf-8');
stream.end();
});
app.listen(PORT, () => console.log(`Server running at ${PORT}`));
рд╕рдВрдкреВрд░реНрдг:
- рд╣рдореЗрдВ рдПрдиреНрдХреЛрдбрд┐рдВрдЧ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреНрдпреЛрдВ рд╣реИ
- рдмрд╛рдЗрдирд░реА рдбреЗрдЯрд╛ рдХрд╛ рд╕рд╛рдорд╛рдиреНрдп рджреГрд╢реНрдп
- рдмрд╛рдЗрдЯ рднреЗрдЬрдиреЗ рдХрд╛ рдЕрдиреБрд╢рдВрд╕рд┐рдд рддрд░реАрдХрд╛
- рдмрдлрд░ рд╡рд╕реНрддреБ
- FileReader рдСрдмреНрдЬреЗрдХреНрдЯ
- рд╣реБрдХ рдкрд░ рд╕рд░рд▓ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди