рдЫрд╡рд┐ рдФрд░ рдердВрдмрдиреЗрд▓ рдбрд╛рдЙрдирд▓реЛрдбрд░ред рдирдП рдорд╛рдирдХ, рдкреБрд░рд╛рдиреА рд╕рдорд╕реНрдпрд╛рдПрдВ

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


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

рдореИрдВ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рд╕рдордЭрддрд╛ рд╣реВрдВ рдХрд┐ рдореЗрд░рд╛ рд▓реЗрдЦ рдЙрд╕ рдорд╛рдирдХ рдХреЗ рд╡рд░реНрддрдорд╛рди рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдЕрднреА рддрдХ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╡рд┐рдХрд╕рд┐рдд рдирд╣реАрдВ рд╣реБрдЖ рд╣реИ, рдФрд░ рдЗрд╕рд▓рд┐рдП рдореИрдВ рдЙрди рдмреНрд░рд╛рдЙрдЬрд╝рд░реЛрдВ рдХреА рд╕реВрдЪреА рджреВрдВрдЧрд╛ рдЬреЛ рдЗрд╕ рд╕рдордп рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рд╣реИрдВ:
  1. рдлрд╝рд╛рдпрд░рдлрд╝реЙрдХреНрд╕ 8
  2. рдХреНрд░реЛрдо 15
  3. рдУрдкреЗрд░рд╛ 11.60 рдмреАрдЯрд╛
  4. рд╕рдлрд╛рд░реА 5.1.1
  5. рдЗрдВрдЯрд░рдиреЗрдЯ рдПрдХреНрд╕рдкреНрд▓реЛрд░рд░ 9

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

рджрд┐рдЦрд╛рд╡рдЯ


рдкреБрд░рд╛рдиреЗ рд╕рдордп рд╕реЗ, рдлрд╝рд╛рдЗрд▓ рдЪрдпрди рд╕рдВрд╡рд╛рдж рдЦреЛрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╛рд░реНрдп рдПрдХ рд╕реНрдЯрд╛рдЗрд▓рд┐рд╢ рдмрдЯрди рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП, рд╣рд┐рдВрд╕рдХ рдмреИрд╕рд╛рдЦреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдХ рд▓реЛрдХрдкреНрд░рд┐рдп рд╕рдорд╛рдзрд╛рди рдЗрдирдкреБрдЯ рдХреЛ рдкрд╛рд░рджрд░реНрд╢реА рдмрдирд╛рдирд╛ рдФрд░ рдПрдХ рд╕реБрдВрджрд░ рджрд┐рд╡рд╛ рдХреЗ рд╢реАрд░реНрд╖ рдкрд░ рд▓рдЯрдХрд╛ рджреЗрдирд╛ рд╣реИред рдпрд╣реА рд╣реИ, рд╕рдм рдХреБрдЫ рдЗрдирдкреБрдЯ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ, рдЗрд╕рдХреЗ рдЖрдХрд╛рд░ рдкрд░ред рдЙрдкрд░реЛрдХреНрдд рд╕рднреА рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдПрдХ рдЕрд▓рдЧ рд╕рдорд╛рдзрд╛рди рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддреЗ рд╣реИрдВред рдЙрдирдореЗрдВ, рдЖрдк рдкреНрд░реЛрдЧреНрд░рд╛рдореЗрдЯрд┐рдХ рд░реВрдк рд╕реЗ рдХреНрд▓рд┐рдХ рдЗрдирдкреБрдЯ рдЙрддреНрдкрдиреНрди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд▓реЗрдХрд┐рди рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдлрд╝рд╛рдЗрд▓ рдЪрдпрди рд╕рдВрд╡рд╛рдж рдХреЛ рдХреЙрд▓ рдХрд░реЗрдВред рдФрд░ рдЗрдирдкреБрдЯ рдХреЛ рдЖрд╕рд╛рдиреА рд╕реЗ рдЫрд┐рдкрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:
<input id="input_file" type="file" multiple style="position:absolute; top:-999px; visibility:hidden"/> <div id="button" style="background-color: blue; width: 100px; height:40px;"></div> 

 <script type="text/javascript"> var input = document.querySelector("#input_file"); var btn = document.querySelector("#button"); btn.onclick = function () { input.click(); }; </script> 

рдпрд╣ рд╡рд┐рдзрд┐ рдЖрдкрдХреЛ рдПрдХ рдирд┐рдпрдВрддреНрд░рдг рдХреЗ рд░реВрдк рдореЗрдВ рдЗрдирдкреБрдЯ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рднреВрд▓ рдЬрд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреА рд╣реИ, рдЬреЛ рдореЗрд░реА рд░рд╛рдп рдореЗрдВ рдмрд╣реБрдд рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИред

рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рдПрдХ рдлрд╝рд╛рдЗрд▓ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ


рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдлрд╝рд╛рдЗрд▓ рдбреЗрдЯрд╛ рдореЗрдВ рд╣реЗрд░рдлреЗрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЪрд┐рддреНрд░ рдХрд╛ рдЖрдХрд╛рд░ рдмрджрд▓рдирд╛, рдЖрдкрдХреЛ рдпрд╣ рдбреЗрдЯрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдЗрд╕рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ FileReader рдХреА рдЬрд░реВрд░рдд рд╣реИред рдердВрдмрдиреЗрд▓ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдХреИрдирд╡рд╕ рдХреЛ рд▓реЗ рдЬрд╛рдПрдВ рдФрд░ рд╡рд╣рд╛рдВ рдлрд╝рд╛рдЗрд▓ рдбреЗрдЯрд╛ рд▓реЛрдб рдХрд░реЗрдВред рдпрджрд┐ рдЖрдк рдмреЗрд╕ 64 рдХреЗ рд░реВрдк рдореЗрдВ рдбреЗрдЯрд╛ рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рддреЗ рд╣реИрдВ рддреЛ рдпрд╣ рд╕рдВрднрд╡ рд╣реИ:

 var files; var reader = new FileReader(); var cv = document.createElement("canvas"); var cvContext = cv.getContext("2d"); input.onchange = function () { files = input.files; reader.readAsDataURL(files[0]); }; reader.onload = function (e) { var im = new Image(); im.onload = function (e) { cv.width = 100; cv.height = 100; cvContext.drawImage(im, 0, 0, 100, 100); //       canvas         } im.src = reader.result; }; 

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

рдердВрдмрдиреЗрд▓ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдФрд░ рд╕рд░реНрд╡рд░ рдкрд░ рднреЗрдЬрдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ


So. рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдореВрд▓ рдЫрд╡рд┐ рд╣реИред рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдХреИрдирд╡рд╛рд╕ рдореЗрдВ рдердВрдмрдиреЗрд▓ рд╣реИрдВред рд╣рдореЗрдВ рдЗрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЗрд╕реЗ рд╕рдореВрд╣рдмрджреНрдз рдХрд░реЗрдВ рдФрд░ рд╕рд░реНрд╡рд░ рдкрд░ рднреЗрдЬреЗрдВред рдХреМрди рд╕рд╛ рдЖрд╕рд╛рди рд╣реИ, рд╣реИ рдирд╛? рдпрд╣реАрдВ рд╕реЗ рд╕рдорд╕реНрдпрд╛рдПрдВ рдкреИрджрд╛ рд╣реЛрддреА рд╣реИрдВред рдЗрд╕ рд╕реНрддрд░ рдкрд░, рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЕрд▓рдЧ рддрд░рд╣ рд╕реЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд░рддреЗ рд╣реИрдВред рдЖрдЗрдП рд╕рднреА рдХреЗ рд▓рд┐рдП рд╕рдорд╛рдзрд╛рди рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред рдмреЗрд╢рдХ, рд╕рд░рд▓ рд╕реЗ рдЬрдЯрд┐рд▓ рддрдХред

рдлрд╝рд╛рдпрд░рдлрд╝реЙрдХреНрд╕

рдпрд╣рд╛рдВ рд╕рдм рдХреБрдЫ рд╕рд░рд▓ рд╣реИред рдХреИрдирд╡рд╕ рдореЗрдВ рдПрдХ mozGetAsFile рддрд░реАрдХрд╛ рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдирд╛рдо рдЦреБрдж рдХреЗ рд▓рд┐рдП рдмреЛрд▓рддрд╛ рд╣реИред рдлрд╝рд╛рдпрд░рдлрд╝реЙрдХреНрд╕ рдлреЙрд░реНрдордбрд╛рдЯрд╛ рдХрд╛ рднреА рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИред рдФрд░ рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рд╣рдорд╛рд░реА рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдХрдВрдЯреЗрдирд░ рд╣реИред XMLHttpRequest рдЗрд╕ рдбреЗрдЯрд╛ рдХреЛ рдЖрд╕рд╛рдиреА рд╕реЗ рд╕рд░реНрд╡рд░ рдкрд░ рднреЗрдЬрддрд╛ рд╣реИ, рдЬрд╣рд╛рдБ рдЗрд╕реЗ рдЙрдард╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдбрд╛рдЙрдирд▓реЛрдб рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ upload.onprogress рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдореЙрдирд┐рдЯрд░ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

 var blobData = cv.mozGetAsFile(name, files[0].type); var form = new FormData(); form.append("Filedata0", files[0]); form.append("Filedata1", blobData); var xhr = new XMLHttpRequest(); xhr.open("POST", "load.php", true); xhr.onload = function () { console.log(this.response); } xhr.upload.onprogress = function (e) { console.log(e.position / e.totalSize) * 100; } xhr.send(form); 


рдХреЗрд╡рд▓ рдПрдХ рдорд╛рдЗрдирд╕ рд╣реИред MozGetAsFile рд╡рд┐рдзрд┐ рдЖрдкрдХреЛ рдЕрдкрд▓реЛрдб рдХреА рдЧрдИ рдЫрд╡рд┐ рдХреА рдЧреБрдгрд╡рддреНрддрд╛ рдХрд╛ рдЪрдпрди рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ рджреЗрддреА рд╣реИред

рдХреНрд░реЛрдо

рдпрд╣рд╛рдБ рдХреЛрдИ mozGetAsFile рдирд╣реАрдВ рд╣реИред рдмреЗрд╕ 64 рдореЗрдВ рдЫрд╡рд┐ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реИ (рдпрд╣ toDataURL рд╡рд┐рдзрд┐ рджреНрд╡рд╛рд░рд╛ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ)ред рд▓реЗрдХрд┐рди рд╡рд╣ рдореБрдЭреЗ рд╕реВрдЯ рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рдерд╛, рдФрд░ рдореИрдВ рдЕрднреА рднреА рдЫрд╡рд┐ рдХреЛ рдмреВрдБрдж рдХреЗ рд▓рд┐рдП рд▓рд╛рдпрд╛ рдерд╛ред рдХреЛрдб рдореЗрдВ рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ:
 var BlobBuilder = window.BlobBuilder || window.WebKitBlobBuilder || window.MozBlobBuilder; //    base64,     ( 0  1) var sBase64 = canva.toDataURL(type, 1); var aBase64 = sBase64.split(','); //  var sData = atob(aBase64[1]); var aBufferView = new Uint8Array(sData.length); // ArrayBuffer    for (var i = 0; i < aBufferView.length; i++) { aBufferView[i] = sData.charCodeAt(i); } //   BlobBuilder   blob var builder = new BlobBuilder(); builder.append(aBufferView.buffer); var blobData = builder.getBlob(type); 


рдпреЗ рдбреЗрдЯрд╛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА FormData рдХреЛ рд▓рд┐рдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдлрд╝рд╛рдпрд░рдлрд╝реЙрдХреНрд╕ рдХреА рддрд░рд╣ рд╣реА рднреЗрдЬрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рдУрдкреЗрд░рд╛

рдпрд╣рд╛рдВ рд╣рдореЗрдВ рдмрдбрд╝реА рд╕рдорд╕реНрдпрд╛рдПрдВ рд╣реИрдВред рдЖрдк рдПрдХ рдердВрдмрдиреЗрд▓ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдХреНрд░реЛрдо рдореЗрдВ рдЙрд╕реА рддрд░рд╣ рдПрдХ ArrayBuffer рдореЗрдВ рдмрджрд▓ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЖрдк рдЗрд╕реЗ рдХреИрд╕реЗ рднреЗрдЬрддреЗ рд╣реИрдВ? рдУрдкреЗрд░рд╛ FormData рдФрд░ BlobBuilder рдХрд╛ рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдФрд░ XMLHttpRequest рдЯреЗрдХреНрд╕реНрдЯ рдХреЛ рдЫреЛрдбрд╝рдХрд░ рдХреЗрд╡рд▓ ArrayBuffer рднреЗрдЬ рд╕рдХрддрд╛ рд╣реИред рдпрд╣рд╛рдВ, рдлреНрд▓реИрд╢ рдкрд░ рдмреВрдЯрд▓реЛрдбрд░ рдмрдирд╛рдиреЗ рдХрд╛ рдЕрдиреБрднрд╡ рд╣рдореЗрдВ рдорджрдж рдХрд░реЗрдЧрд╛ред рд╣рдореЗрдВ рд╕реНрд╡рдпрдВ рдбреЗрдЯрд╛ рдХреЗ рд╕рд╛рде рдлрд╝реЙрд░реНрдо рдХрд╛ рд╢реАрд░реНрд╖рдХ рдЙрддреНрдкрдиреНрди рдХрд░рдирд╛ рд╣реЛрдЧрд╛, рдЗрд╕реЗ ArrayBuffer рдкрд░ рд▓рд┐рдЦреЗрдВ рдФрд░ рдЗрд╕реЗ рд╕рдмрдорд┐рдЯ рдХрд░реЗрдВред
 var sBase64 = canva.toDataURL(type, 1); var aBase64 = sBase64.split(','); var sData = atob(aBase64[1]); var aBufferView = new Uint8Array(sData.length); for (var i = 0; i < aBufferView.length; i++) { aBufferView[i] = sData.charCodeAt(i); } var fBuilder = new FormBuilder(); fBuilder.addFile(aBufferView); var form = fBuilder.getForm(); var xhr = new XMLHttpRequest(); xhr.open("POST", "load.php", true); xhr.onload = function () { alert(this.response); } xhr.setRequestHeader('Content-type', 'multipart/form-data; boundary=' + fBuilder.BOUND); xhr.send(form); function FormBuilder() { this.getBoundary = function () { var _boundary = ""; for (var i = 0; i < 0x20; i++) { _boundary += String.fromCharCode(97 + Math.random() * 25); } return _boundary; } this.addFile = function (name, buffer) { var sHeader = this.ADDB + this.BOUND; sHeader += this.ENTER; sHeader += 'Content-Disposition: form-data; name="Filedata' + this.index + '"; filename="' + name + '"'; sHeader += this.ENTER; sHeader += 'Content-Type: application/octet-stream'; sHeader += this.ENTER; sHeader += this.ENTER; this.index++; this.header = this.sumBuffers(this.header, this.StrToBuffer(sHeader), buffer, this.EnterBuffer); } this.addParam = function (name, value) { var sHeader = this.ADDB + this.BOUND; sHeader += this.ENTER; sHeader += 'Content-Disposition: form-data; name="'+ name + '"'; sHeader += this.ENTER; sHeader += this.ENTER; sHeader += value; sHeader += this.ENTER; this.header = this.sumBuffers(this.header, this.StrToBuffer(sHeader)); } this.getForm = function () { var sHeader = this.ENTER; sHeader += this.ENTER; sHeader += (this.ADDB + this.BOUND + this.ADDB); var aHeader = this.StrToBuffer(sHeader); return this.sumBuffers(this.header, aHeader).buffer; } this.StrToBuffer = function (str) { var buffer = new Uint8Array(str.length); for (var i = 0; i < buffer.length; i++) { buffer[i] = str.charCodeAt(i); } return buffer; } this.sumBuffers = function () { var sumLength = 0, position = 0, aSumHeader; for (var i = 0; i < arguments.length; i++) { sumLength += arguments[i].length; } aSumHeader = new Uint8Array(sumLength); for (var i = 0; i < arguments.length; i++) { aSumHeader.set(arguments[i], position); position += arguments[i].length; } return aSumHeader; } this.BOUND = this.getBoundary(); this.ENTER = "\r\n"; this.EnterBuffer = this.StrToBuffer(this.ENTER); this.ADDB = "--"; this.index = 0; this.header = new Uint8Array(0); } 


рдпрд╣ рдкрд╣рд▓реЗ рд▓реЗрдЦ рд╕реЗ рдореЗрд░реА рдХрдХреНрд╖рд╛ рдХреЗ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕реЗ рдХреНрд░рд┐рдпрд╛рддреНрдордХ рдЕрдиреБрд╡рд╛рдж рдХреЗ рд▓рд┐рдП рдЗрд╕ рддрд░рд╣ рдХрд╛ рдПрдХ рдореБрдлреНрдд рдЕрдиреБрд╡рд╛рдж рд╣реИред рдЗрд╕рдХреЗ рд╕рд╛рде, рд╣рдо рдЕрдирд┐рд╡рд╛рд░реНрдп рд░реВрдк рд╕реЗ рдлреЙрд░реНрдордбрд╛рдЯрд╛ рдХрд╛ рдЕрдиреБрдХрд░рдг рдХрд░рддреЗ рд╣реИрдВред рд╡реИрд╕реЗ, рдХреНрд░реЛрдо рдореЗрдВ рдпрд╣ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдлрд╝рд╛рдпрд░рдлрд╝реЙрдХреНрд╕ рд╢рдкрде рд▓реЗрддрд╛ рд╣реИ - рд╡рд╣ рдирд╣реАрдВ рдЬрд╛рдирддрд╛ рдХрд┐ рдХреИрд╕реЗ рдРрд░реЗрдмрдлрд╝рд░ рдкрд╛рд╕ рдХрд┐рдпрд╛ рдЬрд╛рдПред
рдУрдкреЗрд░рд╛ рдореЗрдВ рд╡рд╛рдкрд╕ рдЬрд╛рдПрдБред рд╕рдм рдХреБрдЫ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдбрд╛рдЙрдирд▓реЛрдб рдХреЛ рдЯреНрд░реИрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╛рдо рдирд╣реАрдВ рдХрд░реЗрдЧрд╛: рдУрдкреЗрд░рд╛ рдореЗрдВ onprogress рд╕рдорд░реНрдерд┐рдд рдирд╣реАрдВ рд╣реИ (рдЬреИрд╕реЗ рдХрд┐ Flash URLLoader рдореЗрдВ)ред

рд╕рдлрд╛рд░реА

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

рдирд┐рд╖реНрдХрд░реНрд╖


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

рдЙрджрд╛рд╣рд░рдг


рдореИрдВ рдПрдХ рдЫреЛрдЯрд╛ рдбреЗрдореЛ рд▓рд╛рддрд╛ рд╣реВрдВ, рд╡рд╣рд╛рдВ рдХреА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдиреНрдпреВрдирддрдо рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рджрд░реНрд╢рд╛рддрд╛ рд╣реИ рдХрд┐ рдЗрд╕реЗ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред
рд╣рд╛рдБ, рдФрд░ рдЕрдзрд┐рдХред рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдиреНрдпреВрдирддрдо рд╕рд░реНрд╡рд░ рдХреЛрдб рдпрд╣ рд╣реИ:

 foreach($_FILES as $key => $value){ $filename = substr_replace($key, '.', -4, 1); move_uploaded_file($value['tmp_name'], $filename); } echo 'complete'; 


рдпрджрд┐ рдЖрдкрдХреЛ рд╕рднреА рд╡рд┐рд▓рд╛ рдФрд░ рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЗ рд╕рд╛рде рдПрдХ рдкреВрд░реНрдг рдмреВрдЯрд▓реЛрдбрд░ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ рд▓рд┐рдЦреЗрдВред рд╢рд╛рдпрдж рдореИрдВ рдХрд░реВрдВрдЧрд╛ред
рдФрд░, рдЬрд╝рд╛рд╣рд┐рд░ рд╣реИ, рдпрд╣ рдордд рднреВрд▓реЛ рдХрд┐ рдУрдкреЗрд░рд╛ рдХрд╛ рд╕рдВрд╕реНрдХрд░рдг рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП 11.60 рдмреАрдЯрд╛ред

Source: https://habr.com/ru/post/In133351/


All Articles