Почему не загружаются параметры dropzone?

#asp.net-core-2.0 #dropzone.js

#asp.net-core-2.0 #dropzone.js

Вопрос:

У меня есть dropzone в моем представлении, и я хотел бы установить некоторые параметры, чтобы принудительно сохранять файлы в формате .zip. Мне также нужно разрешить, чтобы эти файлы были больше, и получить некоторую информацию, когда она вернется. Параметры, похоже, не загружаются для меня, и quecomplete никогда не попадает.

Редактировать.cshtml:

 <div class="row">
  <div class="col-8">
    <form asp-action="UploadFiles" class="dropzone" id="versionFiles"> 
    </form>
  </div>
</div>


@section Scripts {
<script>
    $(document).ready(function () {
        Dropzone.options.versionFiles = {
            acceptedFiles: ".zip",
            maxFileSize: 2048,
            timeout: 600000,
            init: function () {
                this.on("queuecomplete", function (file, response) {
                    console.log(file);
                })
            }
        };

    })
</script>
}
  

Редактировать: Исправлен тайм-аут

Ответ №1:

Избегайте настройки параметров для Dropzone внутри document.ready(function(){ /* ... */ }) .

Чтобы устранить проблему, измените свой код, как показано ниже :

$(документ).готово (функция () {   Dropzone.options.versionFiles = { Принятые файлы: ".zip", максимальный размер файла: 2048, время ожидания: 600000, инициализация: функция () { this.on("queuecomplete", функция (файл, ответ) { console.log("sssssssssssssss", файл); }) } }; }); 

[Править] :

Причина в том, что Dropzone.js автоматически обнаружит все элементы формы с классом dropzone и автоматически присоединится к нему. Если вы настраиваете параметры с помощью document.ready(function(){/.../}) , вы не можете гарантировать, что параметры будут установлены до того, как dropzone вступит в силу.

Если вам действительно нужно запустить после того, как документ готов, вы могли бы использовать программный способ обеспечения последовательности:

 Dropzone.autoDiscover = false;           // disable auto discover

$(document).ready(function () { 
    Dropzone.options.versionFiles = {
        acceptedFiles: ".zip",
        maxFileSize: 2048,
        timeout: 600000,
        init: function () {
            this.on("queuecomplete", function (file, response) {
                console.log("xyz...",file);
            })
        }
    };
    $("#versionFiles").dropzone({ });   // trigger it
});
  

Комментарии:

1. Это то, что я делал раньше, но мой коллега сказал, что это не работает. Можете ли вы сказать мне, почему не следует использовать document.ready? В нескольких примерах, которые я прочитал, там задаются параметры.

2. @RachelMartin Я обновил свой ответ, для меня оба способа работают нормально. Если у вас есть какие-либо другие вопросы, не стесняйтесь, дайте мне знать.