В 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.

Другие вопросы по тегам