Коллеги доброго времени суток,
Прошу помощи у знатоков, как загружать файлы и сохранять их на сервере, на диске???
Проект на nodejs.
Файлы png, jpeg, jpg, pdf. Соответственно нужно определить тип файла его имя и размер, а потом так же сохранить у себя. Задача видимо тривиальная но столкнулся и не могу решить.
вот html:
<form name="uploadMatricula" enctype="multipart/form-data" method="POST">
<label class="tramite">
Загрузить
<input type="file" id="matriculaFile" name="myfile" accept=".jpg,.jpeg,.png,.pdf" multiple>
</label>
</form>
вот клиент js в браузере:
let input = document.getElementById('upload');
input.addEventListener('change', () => {
let files = input.files;
let wrong = false;
if (files.length !== 1) {
this.eventEmitter.emit('popupManager:showTooltip', 'Можно грузить только один файл!');
return;
}
if (!this.checkFileFormat(files[0])) {
this.eventEmitter.emit('popupManager:showTooltip', 'Не верный формат файла!');
return;
}
if (files[0].size > this.fileSizeLimit) {
this.eventEmitter.emit('popupManager:showTooltip', 'Слишком большой файл, не больше 20мб грузите!');
return;
}
let fileData = {
name: files[0].name,
size: files[0].size,
type: files[0].type
}
let form_data = new FormData();
form_data.append('file', files[0]);
transport.uploadFile(form_data, files[0].type, (result) => {
console.log(result);
});
});
собственно код из trancport:
static uploadFile(fileData, header, callback) {
let xhr = new XMLHttpRequest();
xhr.open("POST", '/api/upload', true);
xhr.setRequestHeader('Content-Type', header);
xhr.send(fileData);
xhr.onreadystatechange = () => {
if (xhr.readyState !== 4) return;
if (xhr.status >= 200 && xhr.status < 400) {
let json = (xhr.responseText !== '') ? JSON.parse(xhr.responseText) : '';
callback(json);
} else callback();
}
}
Заранее благодарю за помощь.