1

Java サーブレットを使用してクライアントからパラメーターを取得します。これは私の投稿です:

ここに画像の説明を入力

サーバーにリクエストを送信するには、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を使用できます(これを使用してください!)。

ここに、ApacheCommonsファイルアップロードでやりたいことを行う方法を説明するスニプレットがあります

// 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 に答える