如何在extjs中将内容类型设置为multipart / form-data?

时间:2011-07-20 08:50:34

标签: extjs

我正在使用extjs2.0.1。我正在使用filefield插件来获取文件uplaod功能。对于上传按钮,我希望将content-Type设置为'multipart / form-data'。现在在fiddler我可以看到内容类型设置为Content-Type:application / x-www-form-urlencoded。 我怎样才能做到这一点?

我的代码如下:

Ext.onReady(function() {
Ext.QuickTips.init();
    var uploadFile={
        xtype : 'fieldset',
        title : 'Search',
        autoHeight : true,
        items : [{
                    xtype : 'fileuploadfield',
                    emptyText : 'select file',
                    fieldLabel : 'file',
                    id : 'file-path',
                    buttonCfg : {
                        text :  'browse'
                    }
                }],
        buttons : [{
                    text : 'upload',
                    handler : function() {
                        Path = fp.form.findField('file-path').getValue();
                        var box = Ext.MessageBox.wait('uploading file ','please_wait');

                        if (fp.getForm().isValid()) {
                            Ext.Ajax.request({
                                url : 'uploadFile.jsp',
                                params:'file-path='+Path,
                                method : 'POST',
                                waitMsg : 'Uploading your file...',
                                success : function(response) {
                                    box.hide();
                                    Ext.Msg.alert("Success","Upload Successfull!");

                                },
                                failure : function() {
                                    box.hide();
                                    Ext.Msg.alert("Failure","Upload Failed!");
                                }
                            });
                        }
                    }

                }]


};
var fp = new Ext.FormPanel({
            autoHeight : true,
            bodyPadding: 10,
            margin : '0 0 20',
            frame : 'true',
            renderTo : 'addvoiceline',
            items : [
                       uploadFile
                    ]        
        });

});

2 个答案:

答案 0 :(得分:0)

在extjs3中我会通过在表单配置中将fileUpload设置为true来实现。也许这可以在extjs2中使用。

答案 1 :(得分:0)

使用headers属性。

通常的代理配置:

proxy: {
        type: 'ajax',
        url: "../search",
        actionMethods:  {create: "POST", read: "POST", update: "POST", destroy: "POST"},
        headers: { 'Content-Type': 'multipart/form-data' },
        limitParam: false,
        startParam: false,
        pageParam: false,
        extraParams: JSON.stringify({
        rows: pageSize,
        role: "Admin",
        index: myIndex,
        question: searchPhrase
    })

将其标题设置如下:

headers: { 'Content-Type': 'multipart/form-data' },

作为代码的一部分,它如下所示(headers已添加):

Ext.Ajax.request({
   url : 'uploadFile.jsp',
   params:'file-path='+Path,
   method : 'POST',
   headers: { 'Content-Type': 'multipart/form-data' },
   waitMsg : 'Uploading your file...',
   success : function(response) {
      box.hide();
      Ext.Msg.alert("Success","Upload Successfull!");
   },
   failure : function() {
       box.hide();
       Ext.Msg.alert("Failure","Upload Failed!");
   }
});