Dropzone.js загружает только 2 файла одновременно на каждый запрос - PullRequest
0 голосов
/ 23 января 2019

Я использую DZ для загрузки как звуковых файлов, так и изображений в моем веб-приложении .NET MVC.Мне нужно добиться, чтобы по одному запросу все выбранные файлы загружались одновременно.Насколько я понимаю, для достижения этого следует использовать свойства DZ uploadMultiple и parallelUploads.Однако, если оба свойства установлены в true, не работает.

Мой HTML:

@using (Html.BeginForm("UploadSound", "ManageFiles", FormMethod.Post, new { @class = "dropzone", id = "dropzoneSound", enctype = "multipart/form-data" }))
{
    <input type="hidden" name="soundId" id="sId" value="0" />
    <div class="fallback" multiple="multiple">
        <input type="hidden" name="file" value="" />
    </div>
}

Моя конечная точка:

[HttpPost]
public ActionResult UploadSound(int soundId)
{
    var storedFilenames = new List<string>();

    if (soundId > 0)
    {
        checkFolderExist(Server.MapPath("~/sounds/" + soundId), new List<string>());

        for(int i = 0; i < Request.Files.Count; i++){
            storedFilenames.Add(SaveFile(Server.MapPath("~/sounds/" + soundId), Request.Files[i]));
        }

        return Json(new { message = storedFilenames });
    }
} 

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

Dropzone.options.dropzoneSound = {
        addRemoveLinks: true,
        autoProcessQueue: true,
        uploadMultiple: true,
        maxFilesize: 16, //MB
        maxFiles: 6,
        parallelUploads:6,

        removedfile: function (file) {
            var self = this;
            var s = document.getElementById('soundFile');
            var param = {
                "filename": s.value,
                "soundId": 0
            };
            $.ajax({
                type: 'POST',
                url: '@Url.Action("DeleteSoundFile", "ManageFiles")',
                data: JSON.stringify(param),
                dataType: "json",
                contentType: 'application/json',
                success: function (data) {
                    var soundFileHTML = document.getElementById('soundFile');

                    var _ref;

                    return ((_ref = file.previewElement) != null && _ref.parentNode != null) ? _ref.parentNode.removeChild(file.previewElement) : null;
                }
            });
        },

        init: function () {
            this.on("addedfile", function () {
                if (this.files[9] != null) {
                    this.removeFile(this.files[0]);
                }
            });

            //DZ only uploads 2 files at a time. when 2 files have been uploaded autoProcessQueue has to be set again to trigger next files to upload, if any
            this.on("processing", function (data) {
                this.options.autoProcessQueue = true;
            });

            this.on("complete", function (data) {

                if (data.xhr != undefined) {
                    var res = JSON.parse(data.xhr.responseText);

                    var sIds = document.getElementsByClassName('sId');

                    for (i = 0; i < sIds.length; i++) {
                        sIds[i].value = res.soundId;
                    }
                }
            });
        },
    };

При изменении DZ с помощью кода ниже, запрос не достигает конечной точки:

Dropzone.options.dropzoneSound = {
        addRemoveLinks: true,
        autoProcessQueue: true,
        uploadMultiple: true,
        maxFilesize: 16, //MB
        maxFiles: 6,
        parallelUploads:6,

У кого-то есть такая же проблема или есть решение проблемы?Вся помощь очень ценится!

...