Я пытаюсь использовать Krajee Bootstrap File Input для загрузки файла.Теперь он работает так, что у меня есть кнопка, при нажатии которой открывается модальное диалоговое окно Bootstrap и тег входного файла находится внутри этого модального режима.Пользователь нажимает кнопку обзора, выбирает файл, и файл загружается.Все это прекрасно работает!
Моя проблема в том, что если модальное окно закрыто, а затем снова открыто, управление вводом файлов больше не работает.Когда я нажимаю кнопку обзора, он позволяет мне выбрать файл, но ошибка управления вводом файла Krajee выдает сообщение:
Вы должны выбрать как минимум 1 файл для загрузки.
Несмотря на то, что я выбираю файл, он все равно говорит об этом.Как я уже говорил ранее, он отлично работает при первом использовании, но после многократного использования он начинает получать эту ошибку.Я полагаю, что моя проблема в том, как я разрушаю и воссоздаю контроль.Вот мой модальный диалог и HTML-код управления вводом файлов:
<div class="modal fade" id="modalUpload" tabindex="-1" role="dialog">
<div class="modal-dialog" role="document">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title">Upload Profile Image</h5>
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">×</span>
</button>
</div>
<div class="modal-body">
<div id="divFileInput">
<input id="fileFileUpload" type="file" name="files"/>
</div>
<div id="divCropper">
<img id="imgCropperPicture" alt="profile" />
</div>
</div>
</div>
</div>
</div>
Вот мой соответствующий код на стороне клиента (он написан на TypeScript 2.8):
$("#fileFileUpload").fileinput({
showPreview: true,
uploadAsync: false,
uploadUrl: '/fileupload',
allowedFileExtensions: ['jpg', 'jpeg', 'png'],
allowedPreviewTypes: ['image'],
uploadExtraData: { memberId: $("#hidMemberId").val() },
resizeImage: true,
theme: 'fa',
minFileCount: 1,
maxFileCount: 1,
dropZoneEnabled: false,
showRemove: false,
showUpload: false,
showCancel: false,
overwriteInitial: true
}).on("change", () => {
$("#fileFileUpload").fileinput(("upload") as any).on("filebatchuploadsuccess", (event, data: any) => {
this.uploadFinished(data);
});
});
$('#modalUpload').on('hidden.bs.modal', (e) => {
$("#divCropper").hide();
$("#divFileInput").show();
$("#fileFileUpload").fileinput(("clearStack") as any);
$("#fileFileUpload").fileinput(("clear") as any);
$("#fileFileUpload").fileinput(("destroy") as any).fileinput({
showPreview: true,
uploadAsync: false,
uploadUrl: '/fileupload',
allowedFileExtensions: ['jpg', 'jpeg', 'png'],
allowedPreviewTypes: ['image'],
uploadExtraData: { memberId: $("#hidMemberId").val() },
resizeImage: true,
theme: 'fa',
minFileCount: 1,
maxFileCount: 1,
dropZoneEnabled: false,
showRemove: false,
showUpload: false,
showCancel: false,
overwriteInitial: true
}).on("change", () => {
$("#fileFileUpload").fileinput(("upload") as any).on("filebatchuploadsuccess", (event, data: any) => {
this.uploadFinished(data);
});
});
});
Так что в основном яm инициализация управления вводом файла в первый раз.Код $('#modalUpload').on('hidden.bs.modal' ...)
- это код, который выполняется, когда модальный BootStrap закрыт.Я вызываю метод destroy
для элемента управления вводом файлов, а затем воссоздаю его точно так же, как и раньше.
Буду признателен за любую помощь в получении этой работы!