7

extjs でファイルをアップロードしようとしています (現時点では任意の拡張子です)。モデルとお店があります。ファイルのアップロードはウィンドウから行われ、ウィンドウにフォームがありません。私がネットで試したすべての例は、form.submit() を使用しています。代わりに、以下のように Ajax 呼び出しを使用して、データをサーバーに送信します。

Ext.Ajax.request({

            url : 'qaf/saveSetupDetails.action',

            params : {
                'data' : recordsToSend
            },
            failure : function(response){
                //console.log('error connecting controller');
            },
            success : function(response){
                //console.log('successfully submitted');
            }
        });

データで送信するレコードは次のように取得されます。

var store = Ext.getStore('SomeStore');
        var modifiedRecords = store.getModifiedRecords();
        var recordsToSend = [];
        if(modifiedRecords.length > 0){
            Ext.each(modifiedRecords, function(record){
                recordsToSend.push(record.data);//I'm sure that this is so dump but this is how I do it for other records which are string and not sure how to do it for a file...
            });
        }
        Ext.USE_NATIVE_JSON = true;
        recordsToSend = Ext.encode(recordsToSend);

モデルにレコードを設定する際に、以下のコードを使用します。

var rec = Ext.create('QAF.model.MyModel');
rec.set('modelField',Ext.getCmp('fileUploadCompID').value);

応答で 500 ステータス エラーを受け取りました"Cannot convert value of type [java.lang.String] to required type [org.springframework.web.multipart.commons.CommonsMultipartFile]"

Ext.getCmp('fileUploadCompID').valueこれは、ファイル名を指定してモデルに値を設定する方法が原因であると確信しています。ファイルをモデルに設定する方法と、モデルのフィールドに指定する必要があるデータ型を教えてください。

以下は、スプリングコントローラーでファイルを取得しようとする方法です。

@RequestMapping (value = "/qaf/saveSetupDetails.action")
    public @ResponseBody
    void saveSetupDetails(@RequestParam CommonsMultipartFile data)throws Exception{
        log.info("Enter into saveSetupDetails method..." + data.getOriginalFilename());
    }

私が間違っていることと、これを修正するために何をしなければならないかを教えてください...

4

4 に答える 4