2014-08-27 63 views
0

我想通過使用Ext.Direct的表單提交上傳文件,但是Ext.direct正在發送我的請求作爲類型'application/json'而不是' multipart/form-data'Ext.Direct文件上傳 - 表單提交的類型application/json

這是我的表格。

{ 
     xtype: 'form', 
     api: { 
      submit: 'App.api.RemoteModel.Site_Supplicant_readCSV' 
     }, 
     items: [ 
      { 
       xtype: 'filefield', 
       buttonOnly: false, 
       allowBlank: true, 
       buttonText: 'Import CSV' 
      } 
     ], 
     buttons: 
     [ 
      { 
       text: 'Upload', 
       handler: function(){ 
        var form = this.up('form').getForm(); 
        if(form.isValid()){ 
         form.submit({ 
          waitMsg: 'Uploading...', 
          success: function(form, action){ 
           console.log(action.result); 
          } 
         }); 
        } 
       } 
      } 
     ] 
    }, 

在HTTP請求上,它檢查以查看請求選項是否爲表單上載。

if (me.isFormUpload(options)) { 

它來到這裏

isFormUpload: function(options) { 
    var form = this.getForm(options);  
    if (form) { 
     return (options.isUpload || (/multipart\/form-data/i).test(form.getAttribute('enctype'))); 
    } 
    return false; 
}, 

getForm: function(options) { 
    var form = options.form || null; 
    if (form) { 
     form = Ext.getDom(form); 
    } 
    return form; 
}, 

然而,選擇看上去像這樣

{ 
callback: function (options, success, response) { 
jsonData: Object 
    action: "RemoteModel" 
    data: Array[1] 
     0: form 
     length: 1 
     __proto__: Array[0] 
     method: "Site_Supplicant_readCSV" 
     tid: 36 
     type: "rpc" 
    __proto__: Object 
scope: constructor 
timeout: undefined 
transaction: constructor 
} 

而且也沒有直接的形式配置,但它在jsonData.data存在[0]。所以它不會將其設置爲multipart/form-data類型,並將其作爲類型application/json發送。 我在做什麼錯?爲什麼表單沒有正確提交?

編輯 -我看到很多關於Ext.Direct的'formHandler'配置的討論?我被帶領認爲這個配置可以解決我的問題。但我不知道這應該存在。如果我能找到解決方案,我會更新我的帖子。

解決方案 -簡單地增加/ formHandler /到PARAMS結束設置標誌,解決了我的問題。百思不得其解。

Supplicant.prototype.readCSV = function(params,callback, request, response, sessionID/*formHandler*/) 
{ 
    var files = request.files; 
    console.log(files); 
}; 

回答

1

,處理文件上傳請求,應標明由服務器端提供的 Ext.Direct API中formHandler的方法。

編輯:您正在使用App.api.RemoteModel.Site_Supplicant_readCSV方法上傳文件;此方法需要是formHandler

我對Node.js堆棧不是很熟悉,但是看看this example表明您可能需要將/*formHandler*/描述符添加到服務器端的函數聲明中。

+0

我正在使用Nodejs。 formHandler會進入Supplicant模型嗎? – Alpenglow 2014-08-27 22:21:25

+0

@QuantumScripting請參閱編輯答案。 – 2014-08-27 22:29:49

+0

我很困惑,爲什麼在參數末尾添加描述符是解決方案......但它工作。我想我需要對此事做更多的研究。 – Alpenglow 2014-08-28 15:09:25