我正在尝试使用Kendo UI进行文件上传。该文件存储在ECM中,我使用浏览器绑定上传到CMIS。我原来的AJAX功能就像:
$.ajax({
url: 'MY CMIS URL',
type: 'POST',
data: new FormData($('#myForm')[0]),
processData: false,
contentType: false,
success: function () {
alert("Document Uploaded");
},
error: function (xhr, ajaxOptions, thrownError) {
alert(xhr.status + " " + thrownError);
}
});
所以我的表单上有CMIS属性 - 当我看到fiddler时,这成功地被添加到我的请求中 - 如图所示:
但是现在我使用Kendo UI进行上传,代码如下:
$("#target").kendoUpload({
multiple: false,
async: {
saveUrl: 'MY CMIS URL',
autoUpload: true,
withCredentials: false,
},
upload: function (e) {
$('#propertyValue_0_').val(e.files[0].name);
// e.data = new FormData($('#uploadForm')[0]); - did not work
var formData = $('#uploadForm').serializeArray();
e.data = formData;
}
});
首先,我的数据集类似于我的AJAX调用,但这不起作用。执行序列化并设置e.data = formData;更接近我的需要。当我检查提琴手请求时,我会看到以下内容:
如果我在Dev Tools中设置断点,我可以看到formData变量包含名称和值为“cmisaction”“createDocument”的对象数组
和其余的相同,但在我的提琴手跟踪中,我正在发送名称=“0”和[对象对象]。
如何正确设置e.data到formData中的名称和值?