Как загрузить несколько файлов по одному? - PullRequest
0 голосов
/ 11 июня 2019

Когда я выбираю файлы вместе и отправляю форму, все файлы загружаются.Но если я выберу, если один за другим, и нажмите кнопку Отправить.Загружается только один файл.

<html>
 <form role="form" class="form-horizontal" enctype="multipart/form-data"  action="submit.php" method='post' >
<input name="files[]" id="files" type="file" class="btn btn-primary" multiple="multiple"  accept="application/pdf,image/jpeg,image/gif,image/png,video/mp4" />

</form>


<script>
$(document).ready(function() {
  if (window.File && window.FileList && window.FileReader) {
    $("#files").on("change", function(e) {
      var files = e.target.files,
        filesLength = files.length;
      for (var i = 0; i < filesLength; i++) {
        var f = files[i]
        var fileReader = new FileReader();
        fileReader.onload = (function(e) {
          var file = e.target;
          $("<span class=\"pip\">" +
            "<img class=\"imageThumb\" src=\"" + e.target.result + "\" title=\"" + file.name + "\"/>" +
            "<br/><span class=\"remove\"><i class='fa fa fa-times' aria-hidden='true'></i></span>" +
            "</span>").insertAfter("#files");
          $(".remove").click(function(){
            $(this).parent(".pip").remove();
          });

        });
        fileReader.readAsDataURL(f);
      }
    });
  } else {
    alert("Your browser doesn't support to File API")
  }
});
</script>
</html>

Ответы [ 2 ]

0 голосов
/ 11 июня 2019

Я предлагаю вам использовать любой плагин для загрузки файлов Jquery.

Он отображает прогресс и поддержку перетаскивания, а также поддерживает функцию загрузки AJax, поэтому вы можете загружать несколько файлов, выбирая один за другим.

Я рекомендую этот https://innostudio.de/fileuploader/

или вы можете найти много списка https://jqueryhouse.com/jquery-file-upload-plugins/

0 голосов
/ 11 июня 2019

Текущее поведение вашего кода соответствует ожидаемому. input type=file позволит вам выбрать несколько файлов за один раз и отправить форму, когда установлен несколько тегов. Но в вашем случае, когда вы открываете окно обзора и выбираетеодин файл, только этот файл будет отправлен.

И даже когда вы выбираете файлы один за другим, открывая просмотр, контекст очищается, и только последний выбранный файл выбирается для отправки. Если вы хотитеОтмените это поведение по умолчанию, вам придется обрабатывать его самостоятельно в javascript, что не рекомендуется.

Используйте следующий плагин jquery для достижения этих функций, так как это позволит избежать большого количества кода и времени на табличке:

https://blueimp.github.io/jQuery-File-Upload/basic.html

<html>
    <head>
        <meta charset="utf-8">
        <title>jQuery File Upload Example</title>
    </head>
    <body>
        <input id="fileupload" type="file" name="files[]" data-url="server/php/" multiple>
        <script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
        <script src="js/vendor/jquery.ui.widget.js"></script>
        <script src="js/jquery.iframe-transport.js"></script>
        <script src="js/jquery.fileupload.js"></script>
        <script>
            $(function () {
                $('#fileupload').fileupload({
                     dataType: 'json',
                     done: function (e, data) {
                        $.each(data.result.files, function (index, file) {
                            $('<p/>').text(file.name).appendTo(document.body);
                         });
                     }
                });
            });
        </script>
    </body>
</html>

Просто приведенный выше код будет отправлять файлы по вашему выбору, но вы можете настроить его так, чтобы отображались индикаторы выполнения, выбирать несколько файлов за один раз или один за другим послечтение предоставленной документации.

Официальный документ: читать

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...