В Extjs ServletFileUpload.isMultipartContent(запрос) возвращает false
У меня есть следующий код в моем файле js в extjs
Для создания кнопки обзора
xtype: 'fileuploadfield',
labelAlign: 'left',
width: 800,
emptyText: 'Select a file',
fieldLabel: 'File ',
buttonText: 'Browse',
fileUpload: true,
id : 'BROWSE_BUTTON', name : 'BROWSE_BUTTON'
Передать запрос контроллеру
Ext.Ajax.request({
url : 'controller/upload',
method : 'GET',
params : {
fileName : fileName,
docDesc: docDesc
},
headers : {
'Content-Type' : 'multipart/form-data'
},
contentType: false,
Выше кода возвращается ServletFileUpload.isMultipartContent(request)
false и, следовательно, я не получаю от upload.parseRequest(запрос). Пожалуйста, помогите.
1 ответ
Загрузка файлов не выполняется с использованием обычных методов "Ajax", то есть они не выполняются с использованием запросов XMLHttpRequest. Дополнительная информация
Есть хитрый метод, который использует динамически сгенерированный, скрытый <iframe>
который вставляется в документ, но удаляется после сбора возвращаемых данных. Дополнительная информация
К счастью, Ext.Ajax использует эту технику своими upload(form, url, params, options)
метод.
Существует простой способ загрузить файл на сервер:
Ext.onReady(function () {
var win = Ext.create('Ext.window.Window', {
bodyPadding: 5,
renderTo: Ext.getBody(),
items: [
{
xtype: 'form',
items: [
{
xtype: 'filefield',
fieldLabel: 'File',
name: 'file'
}
]
}
],
buttons: [
{
text: 'Save',
handler: function () {
var form = this.up('window').down('form').getForm();
form.submit({
url: 'www.domain.com',
waitMsg: 'Uploading...'
});
}
}
]
});
win.show();
});
Форма с полем загрузки файла не передается с использованием объекта XMLHttpRequest - вместо этого инфраструктура создает и отправляет временное скрытое <form>
элемент, цель которого относится к временному скрытому <iframe>
, Content-Type заголовка запроса имеет значение multipart/form. Когда загрузка завершена и сервер ответил, временная форма и <iframe>
удалены.
Затем создается поддельный объект XMLHttpRequest, содержащий свойство responseText (заполняется из содержимого <iframe>
) чтобы убедиться, что обработчики событий и обратные вызовы работают так, как если бы мы отправляли форму с использованием AJAX.