Я переписываю страницу загрузки файла, чтобы использовать плагин jquery-file-upload.Сервер (и страница) основаны на граалях, а форма имеет два поля "input type = 'files'".Файлы из обоих полей автоматически загружаются на сервер.
Я использую только базовый файл jquery.fileupload.js (не -ui-версию).Вот список файлов для загрузки файлов, которые я загружаю:
'jquery-file-upload' {
dependsOn 'jquery'
resource url: 'libs/jquery-file-upload/js/jquery.iframe-transport.js'
resource url: 'libs/jquery-file-upload/js/jquery.fileupload.js'
resource url: 'libs/jquery-file-upload/js/jquery.fileupload-process.js'
resource url: 'libs/jquery-file-upload/js/jquery.fileupload-validate.js'
resource url: 'libs/jquery-file-upload/js/vendor/jquery.ui.widget.js'
resource url: 'libs/javascript-templates/js/tmpl.min.js'
resource url: 'libs/jquery-file-upload/css/jquery.fileupload.css'
}
На стороне сервера я создал класс FileMeta, который отображается клиенту как json.
Моя проблема в том, что бывают случаи, когда я хочу вернуть некоторую дополнительную информацию клиенту для использования в событии fileuploaddone.Я не могу понять, как это сделать.Я предполагал, что все, что я отобразил как json в моем классе FileMeta, будет возвращено в данных, но это не так.
Например, мой класс FileMeta имеет следующие поля:
private String name;
private String size;
private String type;
private String error;
private String solutionId;
private String token;
Но когда я обращаюсь к data.files в fileuploaddone, я не вижу те же данные, которые были возвращены с сервера,Я получаю значения только для имени, размера и типа.Я вручную установил строки в type, error, solutionId и token - они были либо перезаписаны, либо проигнорированы.Вот что сейчас делает fileuploaddone:
upForm.on('fileuploaddone', function (e, data) { // invoke callback method on success
$.each(data.files, function (index, file) { //loop though each file
if (file.name){ //successful upload returns a file url
alert("done with " + file.name);
alert("solutionId is " + file.solutionId);
alert("type is " + file.type);
alert("size is " + file.size);
alert("error is " + file.error);
alert("token is " + file.token);
jQuery('#solutionId').val(file.solutionId);
} else if (file.error) {
alert("error is " + file.error);
var error = $('<span class="text-danger"/>').text(file.error); //error text
alert(error);
}
});
});
Очевидно, что что-то обрабатывает возвращенный json.Любые советы о том, где происходит эта обработка, или о том, как она может быть перезаписана, будут высоко оценены.