2016-02-22 16 views
5

私はこのようなUIを持っていますでAJAXを使用して複数の画像をアップロードします:私はPHPでAJAXを使用して、複数の動画をアップロードしたい
enter image description hereは、どのように私はPHP

。そのために、私はjQueryでFormData()を試しました。しかし、1つの画像しかアップロードしていません。

マイフォームファイル:

<form enctype="multipart/form-data" action="/test.php" 
method="post" class="putImages"> 
    <input name="media[]" type="file" multiple/> 
    <input class="button" type="submit" alt="Upload" value="Upload" /> 
    <button type="button" id="add"></button> 
</form> 

私のjQueryのファイル:

<script type="text/javascript"> 
    $(document).ready(function() { 
     $("#add").click(function() { 
      var $div = $('div[id^="inputdiv"]:last'); 
      var num = parseInt($div.prop("id").match(/\d+/g), 10) + 1; 
      var $klon = $div.clone().prop('id', 'inputdiv' + num).appendTo("#athleteRegister").insertBefore("#submitbutton"); 
      $('#inputdiv' + num).find("input").attr('name', 'file[' + num + ']'); 
      $('#inputdiv' + num).find("input").val(""); 
      $('#inputdiv' + num).find("input").attr('id', 'file' + num); 
      $('#inputdiv' + num).find("input").css("outline", "none"); 
      $('#inputdiv' + num).find("div.col-sm-1 i").attr('class', 'fa fa-minus'); 
      $('#inputdiv' + num).find("div.col-sm-1 button").attr('id', 'remove'); 
      $('#inputdiv' + num).find("img").attr('alt', 'remove'); 
     }); 
     $('#sub').click(function() { 
      jQuery.each($('input[name^="media"]')[0].files, function(i, file) { 
       data.append('file-' + i, file); 
      }); 
      $.ajax({ 
       type: 'POST', 
       data: data, 
       url: "../admins/test", 
       cache: false, 
       contentType: false, 
       processData: false, 
       success: function(data) { 
        alert(data); 
       } 
      }); 
     }); 
    }); 
</script> 

誰もがこの問題を解決することはできますか? ありがとう!

+1

を使用して実装されています。または、このようなサードパーティ製のプラグインを使用することができます。https://blueimp.github.io/jQuery-File-Upload/ – Nisam

+0

@Nisam上記のコードのみを使用して実行する必要があります –

答えて

1

ajaxファイルのアップロードでは、dropzone.jsの使用をお勧めします。それは素晴らしいドキュメンテーションと柔軟性が素晴らしいです。

1

は、最後に私は、サーバー側に入力を送信するために、 `serializeArrayを()`を使用してくださいhttps://developer.mozilla.org/en-US/docs/Web/API/FormData/append

$.each($("input[type=file]"), function (i, obj) { 
    $.each(obj.files, function (j, file) { 
     ajaxData.append('file[' + i + ']', file); 
    }) 
});