You can download a minimized version of the library or get the full source code at github.com.
Download source$ npm install fileup-js
Для корректной работы на странице необходимо наличие:
jquery
Для стилизации используется фреймворк bootstrap
<div class="btn btn-success fileup-btn">
Select file
<input type="file" id="upload1">
</div>
<div id="upload1-queue""></div>
<script>
fileUp.create({
url: '/file/upload',
input: 'upload1',
queue: 'upload1-queue',
onSuccess: function(file, response) {
alert('Upload success');
},
onError: function(errorType, options) {
alert('Upload error');
}
});
</script>
<div id="multiple">
<div class="btn btn-success fileup-btn">
Select files
<input type="file" id="upload2" multiple>
</div>
<button onclick="fileUp.get('multiple').uploadAll()"
class="btn btn-link" type="button" style="display: none">
Upload all
</button>
<button onclick="fileUp.get('multiple').removeAll()"
class="btn btn-link" type="button" style="display: none">
Remove all
</button>
<div id="upload2-queue"></div>
</div>
<script>
fileUp.create({
id: 'multiple',
url: '/file/upload',
input: 'upload2',
queue: 'upload2-queue',
lang: 'en',
onSelect: function(file) {
$('#multiple button').show();
},
onRemove: function(file) {
if (Object.keys(this.getFiles()).length === 0) {
$('#multiple button').hide();
}
},
onSuccess: function(file, response) {
alert('Upload success');
},
onError: function(errorType, options) {
alert('Upload error');
}
});
</script>
<div class="btn btn-success fileup-btn">
Select images
<input type="file" id="upload3" multiple accept="image/*">
</div>
<div id="upload3-queue"></div>
<script>
fileUp.create({
url: '/file/upload',
input: 'upload3',
queue: 'upload3-queue',
autostart: true,
filesLimit: 3,
sizeLimit: 1048576 // 1 Mb
});
</script>
<input type="file" id="upload4" multiple style="display: none">
<div id="upload4-dropzone" class="fileup-dropzone p-4 d-inline-block text-primary-emphasis fs-5 rounded-4 text-center">
<i class="bi bi-folder2-open"></i> Drop your files here or click
<div class="fs-6 mt-2">Maximum file size 50Mb</div>
</div>
<div id="upload4-queue"></div>
<script>
let fileUpDrop = fileUp.create({
url: '/file/upload',
input: 'upload4',
queue: 'upload4-queue',
dropzone: 'upload4-dropzone',
})
fileUpDrop.on('load_success', function(file, response) {
alert('Upload success');
});
fileUpDrop.on('error', function(errorType, options) {
alert('Upload error');
});
fileUpDrop.on('dragEnter', function(event) {
console.log('dragEnter');
});
fileUpDrop.on('dragLeave', function(event) {
console.log('dragLeave');
});
fileUpDrop.on('dragEnd', function(event) {
console.log('dragEnd');
});
</script>
<div class="btn btn-success fileup-btn">
Select files
<input type="file" id="upload5" multiple>
</div>
<div id="upload5-queue"></div>
<script>
fileUp.create({
url: '/file/upload',
input: 'upload5',
queue: 'upload5-queue',
files: [
{
name: 'Cat.jpg', // required
size: 254361',
urlPreview: 'src/img/preview/cat.jpg',
urlDownload: 'img/cat.jpg',
},
{
name: 'Flower.jpg', // required
size: 924160,
urlPreview: 'src/img/preview/flower.jpg',
urlDownload: 'img/flower.jpg',
},
{
name: 'FileUp.zip',
size: 23040,
urlDownload: 'https://github.com/n2ref/fileup/archive/master.zip'
}
]
});
</script>
<div class="fileup-theme2">
<div class="btn btn-btn-success fileup-btn">
Select files
<input type="file" id="upload6" multiple>
</div>
<div id="upload6-queue" class="d-flex flex-wrap gap-2 mt-3"></div>
</div>
<script>
fileUp.create({
url: '/file/upload',
input: 'upload6',
queue: 'upload6-queue',
files: [
{
name: 'Cat.jpg', // required
size: 254361,
urlPreview: 'src/img/preview/cat.jpg',
urlDownload: 'img/cat.jpg',
},
{
name: 'Flower.jpg', // required
size: 924160,
urlPreview: 'src/img/preview/flower.jpg',
urlDownload: 'img/flower.jpg',
},
{
name: 'FileUp.zip'
}
],
templateFile:
'<div style="width:125px" class="fileup-file [TYPE] mb-2 p-1 d-flex flex-column gap-2 bg-light border border-secondary-subtle rounded rounded-1">' +
'<div class="fileup-preview">' +
'<img src="[PREVIEW_SRC]" alt="[NAME]" class="border rounded"/>' +
'<i class="fileup-icon fs-4 text-secondary"></i>' +
'</div>' +
'<div class="flex-fill">' +
'<div class="fileup-description">' +
'<span class="fileup-name">[NAME]</span> ' +
'<small class="fileup-size text-nowrap text-secondary">([SIZE])</small>' +
'</div>' +
'<div class="fileup-controls mt-1 d-flex gap-2">' +
'<span class="fileup-remove" title="[REMOVE]">✕</span>' +
'<span class="fileup-upload link-primary">[UPLOAD]</span>' +
'<span class="fileup-abort link-primary" style="display:none">[ABORT]</span>' +
'</div>' +
'<div class="fileup-result"></div>' +
'<div class="fileup-progress progress mt-2 mb-1">' +
'<div class="fileup-progress-bar progress-bar"></div>' +
'</div>' +
'</div>' +
'</div>'
});
</script>
Name | type | default | description |
---|---|---|---|
id | string |
uniq hash | Уникальный идентификатор экземпляра |
url | string |
Адрес, на который будут загружены файлы | |
input | HTMLElement|string |
Идентификатор или объект с элементом input[type=file] |
|
queue | HTMLElement|string |
Идентификатор или объект с элементом, в котором будет размещен список с файлами | |
dropzone | HTMLElement|string |
Идентификатор или объект с элементом, в который можно перетаскивать файлы для загрузки | |
fieldName | string |
file | Имя переменной, в которую должен быть загружен файл |
files | array |
Массив загруженных ранее файлов | |
extraFields | object |
Дополнительные переменные, которые нужно загрузить вместе с файлом | |
showRemove | bool |
true |
Признак для отображения кнопки закрытия у файлов |
lang | string |
en |
Язык интерфейса, двухзначный ключ |
langItems | object |
Список ключевых фраз и их переводов. Может использоваться для корректировки фраз с переводом у какого либо языка или для добавления своего перевода | |
sizeLimit | integer |
0 | Ограничение размера загружаемых файлов |
filesLimit | integer |
0 | Ограничить количество одновременно выбранных файлов |
httpMethod | string |
post | Метод HTTP, используемый при загрузке файлов |
timeout | integer |
Ограничение времени ожидания при загрузке | |
autostart | boolean |
false |
Признак автоматической загрузки файла при его выборе |
templateFile | string |
* | HTML-код, используемый для создания и отображения информации о файле. |
onSelect | function|string |
Событие возникающее при выборе файла | |
onRemove | function|string |
Событие возникающее при удалении файла | |
onBeforeStart | function|string |
Событие возникающее перед началом загрузки файла | |
onStart | function|string |
Событие возникающее в начале загрузки файла | |
onProgress | function|string |
Событие возникающее при изменении прогресса загрузки файла | |
onAbort | function|string |
Событие возникающее при отмене загрузки файла | |
onSuccess | function|string |
Событие возникающее при успешной загрузке файла | |
onError | function|string |
Событие возникающее при ошибке связанной с файлом | |
onDragEnter | function|string |
Событие возникающее при вхождении перетаскиваемого файла в зону загрузки | |
onDragOver | function|string |
Событие возникающее при перетаскиваемого файла по зоне загрузки | |
onDragLeave | function|string |
Событие возникающее при выходе перетаскиваемого файла из зоны загрузки | |
onDragEnd | function|string |
Событие возникающее при завершении перетаскивания файла по зоне загрузки | |
iconDefault | string |
bi bi-file-earmark-text |
Класс иконки для файла по умолчанию |
mimeTypes | object |
Список типов файлов и их расширений для определения подставляемой иконки.
Существующие типы: archive, word, excel, video, audio, pdf, binary . Пример: pdf: { mime: ['application/pdf'], ext: ['pdf'], icon: 'bi bi-file-earmark-pdf' }
|
<div class="fileup-file [TYPE] mb-2 p-1 d-flex flex-nowrap gap-2 bg-light border border-secondary-subtle rounded rounded-1">
<div class="fileup-preview">
<img src="[PREVIEW_SRC]" alt="[NAME]" class="border rounded"/>
<i class="fileup-icon fs-4 text-secondary"></i>
</div>
<div class="flex-fill">
<div class="fileup-description">
<span class="fileup-name">[NAME]</span>
<small class="fileup-size text-nowrap text-secondary">([SIZE])</small>
</div>
<div class="fileup-controls mt-1 d-flex gap-2">
<span class="fileup-remove" title="[REMOVE]">✕</span>
<span class="fileup-upload link-primary">[UPLOAD]</span>
<span class="fileup-abort link-primary" style="display:none">[ABORT]</span>
</div>
<div class="fileup-result"></div>
<div class="fileup-progress progress mt-2 mb-1">
<div class="fileup-progress-bar progress-bar"></div>
</div>
</div>
</div>
Method | Return | Description |
---|---|---|
let instance = fileUp.create( options ) | object |
Метод для создания экземпляра |
let instance = fileUp.get( id ) | object |
Получение ранее созданного экземпляра |
instance.getOptions() | object |
Получение параметров |
instance.getId() | string |
Получение id |
instance.getInput() | jQuery|null |
Получение input |
instance.getQueue() | jQuery|null |
Получение queue |
instance.getDropzone() | jQuery|null |
Получение dropzone |
instance.on(eventName, callback, context) | Подписка на событие | |
instance.one(eventName, callback, context) | Подписка на событие таким образом, что выполнение произойдет лишь один раз | |
instance.getLang() | object |
Получение настроек языка |
instance.getFiles() | object |
Получение всех файлов |
instance.getFileById( fileId ) | object|null |
Получение файла по его id |
instance.removeAll() | Удаление всех файлов | |
instance.uploadAll() | Загрузка всех файлов | |
instance.abortAll() | Отмена загрузки всех файлов |
Event name | Params | Description |
---|---|---|
select | file | Событие возникающее при выборе файла |
remove | file | Событие возникающее при удалении файла |
load_before_start | file, xhr | Событие возникающее перед началом загрузки файла |
load_start | file | Событие возникающее в начале загрузки файла |
load_progress | file, ProgressEvent | Событие возникающее при изменении прогресса загрузки файла |
load_abort | file | Событие возникающее при отмене загрузки файла |
load_success | file, response | Событие возникающее при успешной загрузке файла |
error | errorType, options | Событие возникающее при ошибке связанной с файлом |
load_finish | file | Событие возникающее при завершении запроса, при успешном или нет |
drag_enter | event | Событие возникающее при вхождении перетаскиваемого файла в зону загрузки |
drag_over | event | Событие возникающее при перетаскиваемого файла по зоне загрузки |
drag_leave | event | Событие возникающее при выходе перетаскиваемого файла из зоны загрузки |
drag_end | event | Событие возникающее при завершении перетаскивания файла по зоне загрузки |
$fileup-color-success: #4CAE4C;
$fileup-color-error: #CE0000;
$fileup-file-width: 350px;
$fileup-dropzone-bg-color: #f6f6ff;
$fileup-dropzone-border-color: #0018ff;
$fileup-dropzone-border-style: dashed;
$fileup-dropzone-border-width: 1px;