Я работаю над внедрением Form.io в офлайн-сайт дружественных форм, построенный на jQuery.У меня он отлично работает с surveyJS, но Form.io по-разному обрабатывает поля файла, и у меня возникают проблемы с захватом объектов File для сохранения их в базе данных.
Вот мой код, заполняющий форму.Функция storeImage () сохраняет объект File с помощью localforage, а затем загружает его при подключении к сети.Моя проблема в том, что я могу получить только имена файлов, а не фактический объект файла.Любая помощь приветствуется.
Formio.createForm(document.getElementById('surveyElement'), formioActiveModel)
.then(function(form) {
form.submission = formData;
form.on('error', function(error) {
console.log(error);
});
// Everytime the form changes, this will fire.
form.on('change', function(changed) {
formio = changed;
console.log('Form was changed', changed);
if (formio.changed && typeof formio.changed != undefined) {
let files = $('input[type="file"]');
$.each(files, function(i,f) {
console.log($(f).prop('files'));
});
console.log();
// Process Files
//console.log(formioActiveModel);
let altered = false;
$.each(formioActiveModel.components, function(key, record) {
//console.log(record);
if (record.type === 'file') {
$.each(formio.data[record.key], function(k, r) {
console.log('We may need to upload this file: ' + record.storage);
if (typeof r.url == undefined || !r.url) {
console.log('File needs to be stored.');
console.log(formio.data[record.key][k]);
let image_uuid = uuid();
let url = "/images/file_" + image_uuid + '-' + r.name;
let options = {};
options.files = [];
let file = { 'name': r.name };
options.files.push(file);
console.log(options);
storeImage({}, options, image_uuid);
formio.data[record.key][k].storage = 'url';
formio.data[record.key][k].url = url;
altered = true;
} else {
console.log('File DOES NOT needs to be stored.');
}
});
}
});
formioSaveState(formio,false);
if (altered) {
form.submission = formio.data;
}
}
});
// Register for the submit event to get the completed submission.
form.on('submit', function(submission) {
console.log('Form was submitted.');
formio = submission;
console.log(formio);
});
// What to do when the submit begins.
form.on('submitDone', function(submission) {
window.location = '/app/thanks.html';
});
formio = form;
});