Untitled

 avatar
unknown
plain_text
a month ago
3.1 kB
4
Indexable
<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