JS
// Подключаем плагин загрузки файлов
var classFile = 'js-files__file';
lemurro.file.init(classFile);
// Вешаем загрузчик на кнопку
var btn = $('#js-file-upload');
var onComplete = function (fileID, fileAction, fileName, btn) {
$('#js-files__box').append(_templates.file({
id : fileID,
action: fileAction,
name : fileName
}));
swal('Выполнено', 'Файл <strong>' + fileName + '</strong>' + ' успешно загружен', 'success');
};
lemurro.file.bindUpload(btn, onComplete);
// Вешаем загрузчик на кнопку и переопределяем параметры по умолчанию
var options = {...};
lemurro.file.bindUpload(btn, onComplete, options);
HTML-шаблоны Template7
Для коробки с файлами
<div class="form-group m-form__group">
<label>Файлы</label>
<table class="table">
<!-- Динамический контент -->
<tbody id="js-files__box"></tbody>
</table>
<button type="button" id="js-files__upload" class="btn btn-brand btn-sm m-btn--icon">
<span>
<i class="fas fa-plus"></i>
<span>Загрузить файл</span>
</span>
</button>
</div>
Для файла
<tr class="js-files__file" data-file-id="{{id}}" data-file-action="{{action}}">
<td class="align-middle">
<a href="javascript:lemurro.file.download('{{id}}', '{{name}}');">
<span class="js-name">{{name}}</span>
</a>
</td>
<td class="w1 text-nowrap">
<button type="button" class="btn btn-danger btn-sm m-btn--icon" onclick="lemurro.file.remove('{{id}}')">
<span>
<i class="far fa-trash-alt"></i>
<span>удалить</span>
</span>
</button>
</td>
</tr>
Описание элементов шаблона
- Обязательные переменные
-
id (integer|string) - ИД файла
- ИД записи в БД (для ранее загруженных файлов)
- Имя файла во временном хранилище (для новых файлов)
-
action (string) - Действие совершаемое с файлом
-
add
- для только что загруженного файла (перенос в постоянное хранилище и запись в БД) -
remove
- для удаляемого файла (удаление файла и записи в БД) -
exist
(или любое другое название) - для существующего файла, файлы с действием отличным отadd
иremove
пропускаются и не участвуют в обработке
-
- name (string) - Оригинальное имя загруженного файла
- Обязательный класс
- js-files__file - Класс для элемента, который вы указали при подключении плагина
- js-name - Класс для строки с оригинальным именем файла
- Обязательные атрибуты
- data-file-id - ИД файла
- data-file-action - Действие совершаемое с файлом
Логика добавления файла
- Файл загружается и мы получаем три переменные
id
,action
иname
- Строим элемент используя эти данные
Логика удаления файла
Удаление зависит от действия
- action=add - просто убираем элемент файла из DOM (физически загруженный временный файл будет удалён чистильщиком)
-
action=[ЛЮБОЕ_ДЕЙСТВИЕ_ОТЛИЧНОЕ_ОТ_ADD] - меняем action на
remove
и визуально скрываем эелемент (сейчас файл просто помечен на удаление, физически файл будет удалён если пользователь сохранит форму)