#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 Я обновил свой ответ, для меня оба способа работают нормально. Если у вас есть какие-либо другие вопросы, не стесняйтесь, дайте мне знать.