1

我使用 java servlet 从客户端获取参数。这是我的帖子:

在此处输入图像描述

为了向服务器发送请求,我使用 ExtJs:

var x = new Ext.Window({
                                title:'Загрузка файла',
                                items:[
                                    formp = new Ext.FormPanel({
                                        fileUpload: true,
                                        width: 350,
                                        autoHeight: true,
                                        bodyStyle: 'padding: 10px 10px 10px 10px;',
                                        labelWidth: 70,
                                        defaults: {
                                            anchor: '95%',
                                            allowBlank: false,
                                            msgTarget: 'side'
                                        },
                                        items:[{
                                            xtype:"combo",
                                            fieldLabel:'Тип файла ',
                                            name:"cb_file",
                                            id:"cb_file",
                                            mode:"local",
                                            typeAhead: false,
                                            loadingText: 'Загрузка...',
                                            store:new Ext.data.SimpleStore({
                                                fields: ['file_name', 'file_type'],
                                                    data : [['*.MIF/MID', 'mif'],['*.GPX', 'gpx']]
                                                }),
                                            forceSelection:true,
                                            emptyText:'выбирите тип...',
                                            triggerAction:'all',
                                            valueField:'file_type',
                                            displayField:'file_name',
                                            anchor:'60%'
                                        },{
                                            xtype: 'fileuploadfield',
                                            id: 'filedata',
                                            emptyText: 'Выберите файл для загрузки...',
                                            fieldLabel: 'Имя файла',
                                            buttonText: 'Обзор'
                                        }],
                                        buttons: [{
                                            text: 'Загрузить',
                                            handler: function(){
                                                mapinfo="mapinfo";
                                                    formp.getForm().submit({
                                                        url: url_servlet+'uploadfile',
                                                        //params: {file_type: mapinfo},
                                                        success: function(formp, o) {
                                                            alert(o.result.file);
                                                            alert(o.result.success);
                                                            kad_tab.getStore().reload()
                                                            zoom_store.load();
                                                            }
                                                    })
                                            }
                                        }]
                                    })
                                ]   
                             })
                             x.show();

如果我理解正确:在向服务器发送 2 个参数cb_filefiledata. 我尝试通过以下方式获得它们:

String st = request.getParameter("cb_file");

但是得到null。

当我尝试获取文件时:

list = upload.parseRequest(request);

我也明白null
但是如果我只发送文件(为此我删除带有组合框的行)它工作正常。
如何解析这个请求?

4

1 回答 1

1

那是因为请求是多部分的。您可以阅读请求流并自己解析它或使用 Apache Commons(请使用这个!)。

在这里,您有一个片段,说明了如何使用Apache Commons fileupload执行您想要执行的操作:

// Process the uploaded items
List items = upload.parseRequest(request);
Iterator iter = items.iterator();
while (iter.hasNext()) {
    FileItem item = (FileItem) iter.next();

    if (item.isFormField()) {
        processFormField(item);
    } else {
        processUploadedFile(item);
    }
}

祝你好运!

于 2012-08-30T03:52:23.610 回答