ReactJS рдЗрдореЗрдЬ рдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ - NodeJS

рдЕрдЪреНрдЫрд╛ рджрд┐рдиред

рдореИрдВ Reactjs (рдХреНрд▓рд╛рдЗрдВрдЯ рд╕рд╛рдЗрдб) рдФрд░ Nodejs (рд╕рд░реНрд╡рд░ рд╕рд╛рдЗрдб) рдкрд░ рдбрд┐рдмреНрд░реАрдбрд┐рдВрдЧ рдЦрд░реНрдЪ рдХрд░рддрд╛ рд╣реВрдВ ред

рд╣рд╛рд▓ рд╣реА рдореЗрдВ, рдореЗрд░реА рдЫреЛрдЯреА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ, рд╕рд╡рд╛рд▓ рдпрд╣ рдЖрдпрд╛ рдХрд┐ рдХреИрд╕реЗ рдЖрд╕рд╛рдиреА рд╕реЗ рдФрд░ рд╕рд░рд▓ рд░реВрдк рд╕реЗ рдЯрд╛рдЗрдк рдХреНрд▓рд╛рдЗрдВрдЯ-рд╕рд░реНрд╡рд░ рдХреА рдЫрд╡рд┐рдпреЛрдВ рдХрд╛ рдЖрджрд╛рди-рдкреНрд░рджрд╛рди рд╕рдВрднрд╡ рд╣реИред

рдЖрдЬ рд╣рдо рд╕реАрдЦреЗрдВрдЧреЗ рдХрд┐ рдЧреНрд░рд╛рд╣рдХ рдкрдХреНрд╖ рд╕реЗ рдмрд╛рдЗрдирд░реА рдбреЗрдЯрд╛ (рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдЪрд┐рддреНрд░) рдХреИрд╕реЗ рднреЗрдЬреЗрдВ рдФрд░ рдЙрдиреНрд╣реЗрдВ рд╕рд░реНрд╡рд░ рдкрд░ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░реЗрдВред рдмрд┐рд▓реНрд▓реА рдХреЗ рд▓рд┐рдП рдЖрдкрдХрд╛ рд╕реНрд╡рд╛рдЧрдд рд╣реИред

рдпрджрд┐ рдЖрдкрдХрд╛ рд╡реЗрдм рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдПрдХ рд╕рд╛рдорд╛рдЬрд┐рдХ рдиреЗрдЯрд╡рд░реНрдХ рдпрд╛ рд╕рдВрджреЗрд╢рд╡рд╛рд╣рдХ рдпрд╛ рдХреБрдЫ рд╕рдорд╛рди рд╣реИ, рддреЛ рдЖрдкрдХреЛ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдмрд╛рдЗрдирд░реА рдбреЗрдЯрд╛ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛ рд╣реЛрдЧрд╛, рдЬреНрдпрд╛рджрд╛рддрд░ рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдпрд╣ рдЫрд╡рд┐ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рд╣реИред рдЗрд╕ рдкрд░ рдЪрд░реНрдЪрд╛ рд╣реЛрдЧреАред

рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рд╡рд┐рдЪрд╛рд░ рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП, рдореИрдВ рдЗрд╕реЗ рдХреНрд░рдорд┐рдХ рд░реВрдк рд╕реЗ рд╡реНрдпрд╛рдЦреНрдпрд╛ рдХрд░реВрдВрдЧрд╛ред

рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкрд░ рдПрдХ рдирдЬрд╝рд░ рдбрд╛рд▓реЗрдВ


  1. рдмрд╛рдЗрдирд░реА рдирдВрдмрд░ рд╕рд┐рд╕реНрдЯрдо рдФрд░ рджрд╢рдорд▓рд╡ рд╕рдВрдЦреНрдпрд╛ рдкреНрд░рдгрд╛рд▓реА
  2. рдХреЛрдб рдкреЗрдЬ : ASCII , рдпреВрдирд┐рдХреЛрдб
  3. рдмрд┐рдЯ рдФрд░ рдмрд╛рдЗрдЯ
  4. рд╣реЗрдХреНрд╕ рд╕реНрд╡рд░реВрдк
  5. рдмрд╛рдЗрдирд░реА рдлрд╝рд╛рдЗрд▓
  6. рдмрдлрд░ рдФрд░ рдиреЛрдбрдЬ рдереНрд░реЗрдбреНрд╕
  7. ArrayBuffer рдФрд░ Uint8Array
  8. 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); //   hex 
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">

рдЖрдЧреЗ рдХреНрдпрд╛ рд╣реЛрдЧрд╛?


рдЕрдм рдПрдХ рдорд╣рд╛рди рдЙрджрд╛рд╣рд░рдг рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ рдЬреЛ рдЫрд╡рд┐ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИ:

  1. рд░рд┐рдПрдХреНрдЯрдЬрд╕ рдореЙрдбреНрдпреВрд▓
    import React, {useState, useRef, useCallback} from 'react';
    import axios from 'axios';
    
    export const UPLOAD_AVATAR = 'http://localhost:8080/api/upload_avatar';
    
    function App() {
      //   ref   FileReader
      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] //    JSON,   
            });
    
            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]);
    
        //  reader.readAsBinaryString(fileRef.current[0]) 
        //  MDN,
        //      File API specification, 
        //    
        //  ,     
        //  readAsArrayBuffer
        // https://developer.mozilla.org/en-US/docs/Web/API/FileReader/readAsBinaryString
      }, []);
    
      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;
    
                   

  2. рдПрдХреНрд╕рдкреНрд░реЗрд╕рдЬреЗрдПрд╕ рдореЙрдбреНрдпреВрд▓
    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 рдСрдмреНрдЬреЗрдХреНрдЯ
  • рд╣реБрдХ рдкрд░ рд╕рд░рд▓ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди

All Articles