使用Ajax和PHP上传音频文件

时间:2017-05-26 06:14:55

标签: javascript php jquery ajax audio

我正在尝试上传音频文件。

正在做的是将音频文件通过Ajax传递给PHP,在那里上传和其他插入到我的数据库中。

在通过Ajax传递之后,我的PHP页面看不到音频文件。

<script type="text/javascript">
$(function () {

  $('form').on('submit', function (e) {

    e.preventDefault();

    document.getElementById("load").style.display = "block";
    textarea = $('#editor-one').html();
    var formData = new FormData($(this)[0]);
    formData.append("content", textarea);

    $.ajax({
      type: 'post',
      url: 'verimg.php?ins=newmu',
      data: formData,

      cache: false,
      contentType: false,
      processData: false,
      success: function(data){
        document.getElementById("load").style.display = "none";
        //alert(textarea);
        jQuery('#get_result').html(data).show();
      }
    });
  });
});

  </script>

这是我的PHP代码:

if(!isset($_FILES['file'])){
  echo '<div class="alert alert-warning">
          <strong>Warning!</strong> Please select an audio
        </div>';
}else{
  $uploaderror='';
  $name = ucfirst($_POST['name']);
  $artist = $_POST['artist'];
  $content = $_POST['content'];
  $genre = $_POST['genre'];

  $validator = new FormValidator();
  $validator->addValidation("name","req","Please fill in Music Name");
  $validator->addValidation("category","req","Please Select Artist");
  $validator->addValidation("category","req","Please Select Genre");
}

我总是得到&#34;警告!请选择音频&#34;。

2 个答案:

答案 0 :(得分:1)

我已对您的formData进行了更改。在您的PHP代码中,您正在尝试检查文件&#39;键入您的全局$ _FILES变量,但在您的formData变量中,音频文件不会附加到任何&#39;键&#39;。希望它有效:)

<script type="text/javascript">
 $(function () {

$('form').on('submit', function (e) {

  e.preventDefault();

  document.getElementById("load").style.display = "block";
  textarea = $('#editor-one').html();
  var formData = new FormData();
  formData.append("file", e.target.files[0]);
  $.ajax({
    type: 'post',
    url: 'verimg.php?ins=newmu',
    data: formData,
    cache: false,
    contentType: false,
    processData: false,
    success: function(data)
    {
        document.getElementById("load").style.display = "none";
        //alert(textarea);
        jQuery('#get_result').html(data).show();
    }
  });

});

});

</script>

答案 1 :(得分:0)

尝试将enctype='multipart/form-data'添加到您的form代码中 ;)

A long painfull Reference is here.