Untitled
<div class="d-inline-block"> <button type="button" id="startRecording" class="btn btn-post btn-tooltip-form e-none text-primary rounded-pill" data-toggle="tooltip" data-placement="top" title="Začít nahrávat"> <i class="bi-mic f-size-20 align-bottom" id="iconMic"></i> </button> <audio id="audioPreview" class="d-none mt-2" controls></audio> <input type="hidden" name="audioFile" id="audioFile"> </div> <script> let mediaRecorder; let audioChunks = []; const startButton = document.getElementById("startRecording"); const iconMic = document.getElementById("iconMic"); startButton.addEventListener("click", async () => { if (mediaRecorder && mediaRecorder.state === "recording") { // Zastavení nahrávání mediaRecorder.stop(); iconMic.classList.replace("bi-stop-circle", "bi-mic"); startButton.setAttribute("data-original-title", "Začít nahrávat"); } else { // Zahájení nahrávání const stream = await navigator.mediaDevices.getUserMedia({ audio: true }); mediaRecorder = new MediaRecorder(stream); mediaRecorder.ondataavailable = (event) => { audioChunks.push(event.data); }; mediaRecorder.onstop = async () => { const audioBlob = new Blob(audioChunks, { type: "audio/mp3" }); const audioFile = new File([audioBlob], `nahravka_${Date.now()}.mp3`, { type: "audio/mp3" }); const fileUploaderInstance = $.fileuploader.getInstance($('input[name="photo[]"]').get(0)); if (fileUploaderInstance) { // Generování URL pro stahování souboru const fileURL = URL.createObjectURL(audioBlob); // Vytvoření mock souboru se správnými atributy const mockFile = { name: audioFile.name, size: audioFile.size, type: audioFile.type, file: audioFile, data: { url: fileURL, // Nastavení URL pro stahování }, append: true, // Přidání souboru do seznamu }; fileUploaderInstance.append(mockFile); // Aktualizace stavu setTimeout(() => { const addedFile = fileUploaderInstance.getFileList().find(file => file.name === audioFile.name); if (addedFile) { addedFile.upload.status = 'successful'; addedFile.html.addClass('upload-successful'); // Přidání stavu úspěšného nahrání addedFile.html.find('.fileuploader-progressbar').hide(); // Skrytí progress baru // Oprava atributu `href` pro stahování addedFile.html.find('.fileuploader-action-download').attr('href', fileURL); console.log(`Nahrávka ${audioFile.name} byla označena jako úspěšně nahraná.`); } else { console.error("Soubor nebyl nalezen v seznamu souborů."); } }, 100); } else { console.error("Instance FileUploaderu nebyla nalezena."); } // Vyčištění audioChunks = []; }; mediaRecorder.start(); iconMic.classList.replace("bi-mic", "bi-stop-circle"); startButton.setAttribute("data-original-title", "Zastavit nahrávání"); } }); </script>
Leave a Comment