我想使用针对服务器的自定义请求上传extjs5表单数据(包含要上载的文件!)。这是服务器所期望的:
{
"method" : <method name>,
"use_json" : <true|false>,
"data" : { <parameters in JSON format> }
}
e.g.
{
"method" : "foo",
"use_json" : "1",
"data" : {
"param1": "bar",
"file" : "myFile"
}
}
我使用的表单面板包含&#34; fileUpload:true,&#34;以及&#34; fileuploadfield&#34;领域。一旦用户点击提交按钮,就会触发一个事件,由主控制器挑选,然后通过以下方法处理:
sendRequest: function(sender,parameters) {
var serverMethod = parameters.method;
var formData = parameters.form.getForm().getFieldValues();
var requestData = {
'method' : serverMethod,
'use_json' : "1",
'data' : formData
};
Ext.Ajax.request({
'url' : '../../cgi-bin/cmd.cgi',
'method' : 'POST',
'jsonData': requestData,
'waitMsg' : 'Sending request...',
'headers' : {'Content-Type':'multipart/form-data; charset=UTF-8'},
});
} //endfunction sendRequest
我收到服务器错误500说明&#34;格式错误的多部分POST:数据被截断&#34;表示请求未正确发送到服务器。请求标题显示的内容证实了这一点 - 显然它仍然使用&#39; XMLHttpRequest&#39;虽然它不应该(根据extjs文档):
Accept text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Encoding gzip, deflate
Accept-Language de,en-US;q=0.7,en;q=0.3
Content-Length 161
Content-Type multipart/form-data; charset=UTF-8
Cookie CGISESSID=9eadc8cb28eac7cc02b0a4b5895e0b41
Host localhost:8080
Referer ...
User-Agent Mozilla/5.0 (Windows NT 6.1; WOW64; rv:35.0) Gecko/20100101 Firefox/35.0
X-Requested-With XMLHttpRequest
所以,我的问题是:我需要做些什么来使extjs使用非标准的文件上传请求和我的自定义数据结构?