使用PHP和Jquery将音频上传到文件夹

13

大家好。

以下是我的HTML代码。

<!DOCTYPE html>
<html>
  <head>
    <script src="src/recorder.js"></script>
    <script src="src/Fr.voice.js"></script>
    <script src="js/jquery.js"></script>
    <script src="js/app.js"></script>
  </head>

  <body>
    <div class="center_div">
      <span class="recording_label">Please wait...</span>
      <span class="loader_bg"></span>
      <span class="loader_bg1"></span>

      <br/>
      <audio controls id="audio"></audio>
    </div>  

    <style>
      .center_div {
        width: 500px;
        height: 150px;
        background-color: #f5f5f5;
        border: 1px solid #808080;
        position:absolute;
        top:50%;
        left:50%;
        margin-left:-250px;/* half width*/
        margin-top:-75px;/* half height*/
        padding:25px;
      }

      .recording_label {
        display: block;
        text-align: center;
        padding: 10px;
        font-family: sans-serif;
        font-size: 1.1em;
        margin-bottom: 25px;
      }

      .loader_bg {
        min-width: 100%;
        background: #c5c5c5;
        min-height: 20px;
        display: block;
      }
      .loader_bg1 {
        min-width: 90%;
        background: grey;
        min-height: 20px;
        display: inline-block;
        position: relative;
        top: -20px;
      } 

      audio {
      }
    </style>
  </body>
</html>
在上述代码中,我试图在录音完成后记录并预览音频。我想使用PHP将该预览音频上传到文件夹中。有人可以帮我在AJAX部分中如何发送mp3文件吗?我参考了很多链接,但无法解决这个问题的部分。请有人帮助我。提前致谢。请参考我的工作fiddle。

获取源文件如下:

<audio controls="" id="audio" src="blob:null/b63e868d-1628-4836-85da-90cf1b5b65c3"></audio>

我怎么才能获取这个数据块并将其转换为mp3格式,并保存到文件夹中?


你的问题似乎不太清楚...你也想录制吗?如果是的话,你在这里没有提到。 - Mittul At TechnoBrave
在这个链接中,他们将blob链接保存在数据库中,我不想这样做。我需要将blob转换为mp3,然后上传音频文件。 - Kavya Shree
让我们在聊天中继续这个讨论 - Mittul At TechnoBrave
http://imalhasaranga.com/2014/03/03/html5-video-audio-recording-and-uploading/ - Mittul At TechnoBrave
现在请检查我的问题并在本地运行该HTML代码,这样您就可以清楚地理解了。 - Kavya Shree
显示剩余11条评论
1个回答

8
请将app.js中的代码更改如下,设置ajax调用中的url。
  $(function(){
        var max = 40;
        var count = max + 1;
        var counter = setInterval(timer, 1000);

        function timer() {
            count = count - 1;
            if (count <= 0) {
                clearInterval(counter);
                $(".recording_label").html("Recording...");
                $('.loader_bg1').css({'min-width':''+(100)+'%'})
                    Fr.voice.record(false, function(){});
                    Fr.voice.stopRecordingAfter(40000, function(){
                      //alert("Recording stopped after 40 seconds");
                      Fr.voice.export(function(url){
                        $("#audio").attr("src", url);
                        $("#audio")[0].play();
                      }, "URL");

                    });
                recordingSec(40);
                return;
            }
            $(".recording_label").html("Recording will begin in " + count + " sec.");
            var percent = (count / max ) * 100 ;
            $('.loader_bg1').css({'min-width':''+(100 - percent)+'%'})
        }
  });

  function uploadAudio(){
    Fr.voice.exportMP3(function(blob){
        var data = new FormData();
        data.append('file', blob);

        $.ajax({
            url: "server.php",
            type: 'POST',
            data: data,
            contentType: false,
            processData: false,
            success: function(data) {
                // Sent to Server
            }
        });
    }, "blob");
  }

  function recordingSec(sec){
        var count = sec + 1;
        var counter = setInterval(timer, 1000);

        function timer() {
            count = count - 1;
            if (count <= 0) {
                clearInterval(counter);
                $(".recording_label").html("Recording stopped...Playing");
                $('.loader_bg1').css({'min-width':''+(100)+'%'})
                //stopRecording();
                return;
            }
            $(".recording_label").html("Recording started [ " + (sec - count) + " / " + sec + " ] sec.");
            var percent = (count / sec ) * 100 ;
            $('.loader_bg1').css({'min-width':''+(100 - percent)+'%'})
        }     
  }

请参考此文档

请查看此文件以供参考

Server.php示例

<?php 
$path = 'audio/'; 
$location = $path . $_FILES['file']['name'] . ".mp3"; 
move_uploaded_file($_FILES['file']['tmp_name'], $location); 
 ?>

我无法获取这个引用链接..@karthikeyan - Kavya Shree
@KavyaShree 在录制音频通话后,调用uploadAudio()函数。请参考ajax部分,音频文件将被上传到指定的URL。 - Karthikeyan Vedi
嗨,@karthikeyan。我已经尝试过了,但它没有上传到文件夹中。如果我尝试点击链接,它会显示网站无法访问的错误。 - Kavya Shree
@KavyaShree 参考示例中不包含任何服务器端脚本,您需要编写一个 PHP 代码并将文件保存在服务器上。 - Karthikeyan Vedi
让我们在聊天中继续这个讨论 - Kavya Shree
显示剩余3条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接