рдПрдХ рдорд╛рдЗрдХреНрд░реЛрдлреЛрди рдпрд╛ рдЖрд╡рд╛рдЬ рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рд╕реЗ рдЬреЗрдПрд╕ рдзреНрд╡рдирд┐ рд░рд┐рдХреЙрд░реНрдбрд┐рдВрдЧ

рдПрдХ рдорд╛рдЗрдХреНрд░реЛрдлреЛрди рдпрд╛ рдЖрд╡рд╛рдЬ рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рд╕реЗ рдЬреЗрдПрд╕ рдзреНрд╡рдирд┐ рд░рд┐рдХреЙрд░реНрдбрд┐рдВрдЧ


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

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

рд╕рдорд╕реНрдпрд╛ рдХрд╛ рдмрдпрд╛рди


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

рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рдзреНрд╡рдирд┐ рд░рд┐рдХреЙрд░реНрдб рдХрд░реЗрдВ


рдзреНрд╡рдирд┐ рд░рд┐рдХреЙрд░реНрдбрд┐рдВрдЧ рдХреЛ MediaStream рд░рд┐рдХреЙрд░реНрдбрд┐рдВрдЧ рд╡реЗрдм API рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдХрд░рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓рд┐рдпрд╛ рдЧрдпрд╛ред рд░рд┐рдХреЙрд░реНрдбрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП, рд╣рдо MediaRecorder () рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред рд▓реЗрдХрд┐рди рдкрд╣рд▓реЗ, рдПрдХ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдмрдирд╛рдПрдВред рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдХреЗрд╡рд▓ рд╕рдмрд╕реЗ рдореВрд▓ рдЯреИрдЧ рд╡рд╛рд▓реЗ index.html рд╣реИрдВ, рдФрд░ рдЯреИрдЧ рдХреЗ рд╢рд░реАрд░ рдореЗрдВ рд╣рдо рдЕрдкрдиреЗ рднрд╡рд┐рд╖реНрдп рдХреА рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЖрд╡рд╛рдЬ рдХреЗ рд╕рд╛рде рдПрдХ рдлрд╝рд╛рдЗрд▓ рд╢рд╛рдорд┐рд▓ рдХрд░рддреЗ рд╣реИрдВред js:

<!DOCTYPE html> <head> <meta charset="UTF-8"> <title>Voice comments</title> </head> <body> <script src="voice.js"></script> </body> </html> 

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

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

 navigator.mediaDevices.getUserMedia({ audio: true}) .then(stream => { const mediaRecorder = new MediaRecorder(stream)}); 

рдЕрдм рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдирд┐рд░рдВрддрд░ рдореАрдбрд┐рдпрд╛рдХреНрд░реЗрдЯрд░ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рд╣реИ, рдФрд░ рд╣рдо рдЗрд╕рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛ рдЬрд╛рд░реА рд░рдЦреЗрдВрдЧреЗред

рд░рд┐рдХреЙрд░реНрдбрд┐рдВрдЧ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ MediaRecorder.start () рд╡рд┐рдзрд┐ рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рд░рд┐рдХреЙрд░реНрдбрд┐рдВрдЧ рдХреЛ рд░реЛрдХрдиреЗ рдХреЗ рд▓рд┐рдП, MediaRecorder.stop () рд╡рд┐рдзрд┐ред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, MediaRecorder.stop () рдПрдХ рдбреЗрдЯрд╛рдЕрд╡реЗрд▓реЗрдмрд▓ рдЗрд╡реЗрдВрдЯ рдЙрддреНрдкрдиреНрди рдХрд░рддрд╛ рд╣реИ рдЬрд┐рд╕рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╣рдо рдмрд╛рдЗрдирд░реА рд╕рд░рдгреА рдХреЗ рд░реВрдк рдореЗрдВ рдбрд┐рдЬреАрдЯрд▓ рдзреНрд╡рдирд┐ рд░рд┐рдХреЙрд░реНрдбрд┐рдВрдЧ рддрдХ рдкрд╣реБрдВрдЪ рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВред

рдФрд░ рдЗрд╕рд▓рд┐рдП рд╣рдо рдЙрдкрд░реЛрдХреНрдд рдШрдЯрдирд╛рдУрдВ рдХрд╛ рд╡рд░реНрдгрди рдХрд░реЗрдВрдЧреЗ, рдЖрд╡рд╛рдЬ рдХреА рдШреЛрд╖рдгрд╛ рдХрд░реЗрдВрдЧреЗ [] рд╕рд░рдгреА рдФрд░ рдЗрд╕рдореЗрдВ рдкреНрд░рд╛рдкреНрдд рдбреЗрдЯрд╛ рд▓рд┐рдЦреЗрдВ:

 navigator.mediaDevices.getUserMedia({ audio: true}) .then(stream => { const mediaRecorder = new MediaRecorder(stream); let voice = []; document.querySelector('#start').addEventListener('click', function(){ mediaRecorder.start(); }); mediaRecorder.addEventListener("dataavailable",function(event) { voice.push(event.data); }); document.querySelector('#stop').addEventListener('click', function(){ mediaRecorder.stop(); }); }); 

рдЕрдм рд╣рдо рдкреНрд░рд╛рдкреНрдд рдЖрдВрдХрдбрд╝реЛрдВ рдХреЛ рднреЗрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рдХрд░реЗрдВрдЧреЗред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╕реНрдЯреЙрдк рдЗрд╡реЗрдВрдЯ рджреНрд╡рд╛рд░рд╛, рдПрдХ BLOB рдЙрджрд╛рд╣рд░рдг рдмрдирд╛рдПрдВ, рдкреНрд░рд╛рдкреНрдд рдбреЗрдЯрд╛ рдХреЛ рдЗрд╕рдореЗрдВ рдбрд╛рд▓реЗрдВ рдФрд░ MIME рдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд░ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░реЗрдВред рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдпрд╣ рдСрдбрд┐рдпреЛ / wav рд╣реЛрдЧрд╛ред

 mediaRecorder.addEventListener("stop", function() { const voiceBlob = new Blob(voice, { type: 'audio/wav' }); 

рдирддреАрдЬрддрди, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рд╡реЙрдЗрд╕рдмреНрд▓реЛ рд╕реНрдерд┐рд░рд╛рдВрдХ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рд╡реЙрдпрд╕ рд╕рдВрджреЗрд╢ рд░рд┐рдХреЙрд░реНрдб рдХрд░рдиреЗ рдХреЗ рд╕рд╛рде рд╣рдорд╛рд░реА рднрд╡рд┐рд╖реНрдп рдХреА wav рдлрд╝рд╛рдЗрд▓ рдХреА рд╕рд╛рдордЧреНрд░реА рд╣реИред

рд╕рд░реНрд╡рд░ рдкрд░ рд░рд┐рдХреЙрд░реНрдб рднреЗрдЬрдирд╛


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

 let fd = new FormData(); fd.append('voice', voiceBlob); 

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

рд╣рдо рдПрдХ рд╕рд░реНрд╡рд░ рдЕрдиреБрд░реЛрдз рдЖрд░рдВрдн рдХрд░рддреЗ рд╣реИрдВ:

 let promise = await fetch(URL, { method: 'POST', body: form}); 

рдпрджрд┐ рд╕рд░реНрд╡рд░ рд╕реЗ HTTP рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рдПрдХ рддреНрд░реБрдЯрд┐ рдХреЛрдб (рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЛрдб 200-299 рдХреА рд╕реАрдорд╛ рдореЗрдВ) рдирд╣реАрдВ рд╣реИ, рддреЛ рдпрд╣ рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЛ рдбреАрдХреЛрдб рдХрд░рдиреЗ, рдкреЗрдЬ рдкрд░ рдПрдХ рдирдпрд╛ рдСрдбрд┐рдпреЛ рдСрдмреНрдЬреЗрдХреНрдЯ рдмрдирд╛рдиреЗ, рдЗрд╕рдХреЗ рдЧреБрдгреЛрдВ рдХреЛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдФрд░ рдЗрд╕реЗ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд░рд╣рддрд╛ рд╣реИред рдЙрддреНрддрд░ рдХреИрд╕реЗ рдмрдирддрд╛ рд╣реИ, рдиреАрдЪреЗ рдЪрд░реНрдЪрд╛ рдХреА рдЬрд╛рдПрдЧреАред

рд╕рд░реНрд╡рд░ рдкрд░ рдлрд╝рд╛рдЗрд▓ рд╕рд╣реЗрдЬрдирд╛


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

 $uploadDir = 'voice/'; $typeFile = explode('/', $_FILES['voice']['type']); $uploadFile = $uploadDir . basename(md5($_FILES['voice']['tmp_name'].time()).'.'.$typeFile[1]); if (move_uploaded_file($_FILES['voice']['tmp_name'], $uploadFile)) { $response = ['result'=>'OK', 'data'=>'../'.$uploadFile]; } else { $response = ['result'=>'ERROR', 'data'=>'']; } echo json_encode($response); 

рдЖрдк PHP рдХреЛрдб рдХреЗ рдХрдИ рд╕рдорд╛рди рдЙрджрд╛рд╣рд░рдг рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВ, рдиреЗрдЯрд╡рд░реНрдХ рдкрд░ рдкреНрд░рд╛рдкреНрдд рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░ рд░рд╣реЗ рд╣реИрдВред рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд╡реИрд░рд┐рдПрдмрд▓, $ uploadDir рдХреЛ рд╢реБрд░реВ рдХрд░реЗрдВ - рд╡рд╣ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдЬрд┐рд╕рдореЗрдВ рдкреНрд░рд╛рдкреНрдд рдХреА рдЧрдИ рдлрд╝рд╛рдЗрд▓ рд╕рд╣реЗрдЬреА рдЬрд╛рдПрдЧреА, рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдлрд╝рд╛рдЗрд▓ рдкреНрд░рдХрд╛рд░ рдФрд░ typeFile, wav рдФрд░ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рд╕рд╣рд┐рдд рдкреВрд░реНрдг рдлрд╝рд╛рдЗрд▓ рдирд╛рдо рдХреЗ рдмрд░рд╛рдмрд░ рд╣реЛрдЧрд╛ред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдирд╛рдо "рдЕрд╕реНрдерд╛рдпреА" рдлрд╝рд╛рдЗрд▓ рдирд╛рдо рдФрд░ md5 рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдиреНрдХреНрд░рд┐рдкреНрдЯ рдХрд┐рдП рдЧрдП рд╡рд░реНрддрдорд╛рди рд╕рдордп рдХреЗ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдорд╛рди рдХреЛ рдорд┐рд▓рд╛рдХрд░ рдмрдирддрд╛ рд╣реИред рдпрджрд┐ рдЖрдк рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рдзреНрд╡рдирд┐ рд╕рдВрджреЗрд╢ рдХреЗ рд╕рд╛рде рдлрд╝рд╛рдЗрд▓ рдХреЛ рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рд╕рд╣реЗрдЬрддреЗ рд╣реИрдВ, рддреЛ рд╣рдо рдкрд░рд┐рдгрд╛рдо рдХреЗ рдЖрдзрд╛рд░ рдкрд░ "рдлрд╝реАрд▓реНрдб" рдпрд╛ "ERROR" рдХреЗ рдмрд░рд╛рдмрд░ рдкрд░рд┐рдгрд╛рдо рдлрд╝реАрд▓реНрдб рд╡рд╛рд▓реЗ рд╕рд░рдгреА рдХреЗ рд░реВрдк рдореЗрдВ рдПрдХ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдмрдирд╛рддреЗ рд╣реИрдВ рдФрд░ рд╕рдлрд▓ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ "рдбреЗрдЯрд╛" рдлрд╝реАрд▓реНрдб, рдЬрд┐рд╕рдореЗрдВ рд╕рд╣реЗрдЬреЗ рдЧрдП рдлрд╝рд╛рдЗрд▓ рдХрд╛ рд▓рд┐рдВрдХ рд╢рд╛рдорд┐рд▓ рд╣реИред

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

рдкреВрд░рд╛ рдирдореВрдирд╛ рдХреЛрдб GitHub рдкрд░ рдЙрдкрд▓рдмреНрдз рд╣реИ ред

PS рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдЖрдкрдХреЛ рдХреЗрд╡рд▓ рд╕реБрд░рдХреНрд╖рд┐рдд HTTPS рдХрдиреЗрдХреНрд╢рди рдХреЗ рд╕рд╛рде рдореАрдбрд┐рдпрд╛ рд╕рд╛рдордЧреНрд░реА рдХреЛ рд░рд┐рдХреЙрд░реНрдб рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред

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


All Articles