Serialize Form Data during Async Upload
Environment
Product | Progress® Kendo UI® Upload for jQuery |
Operating System | Windows 10 64bit |
Visual Studio Version | Visual Studio 2017 |
Preferred Language | JavaScript |
Description
How can I include a collection of form fields as metadata during asynchronous uploads?
Solution
The output from the commonly used jQuery.serializeArray
helper is not directly usable in the upload
event and needs to be processed. The following example demonstrates how to achieve this.
<form id="form"/>
<input type="text" name="name1" value="value1" />
<input type="text" name="name2" value="value2" />
</form>
<input type="file" id="files" />
<script>
$('#files').kendoUpload({
async: {
saveUrl:'placeholder'
},
upload: function (e) {
var data = {};
var form = $('#form').serializeArray();
$.each(form, function() {
data[this.name] = this.value;
});
e.data = data;
}
});
</script>
The network request is expected to look like the one shown below.
------WebKitFormBoundaryXLTaUOP1FzKWJJlD
Content-Disposition: form-data; name="name1"
value1
------WebKitFormBoundaryXLTaUOP1FzKWJJlD
Content-Disposition: form-data; name="name2"
value2
------WebKitFormBoundaryXLTaUOP1FzKWJJlD
Content-Disposition: form-data; name=""; filename="filename.txt"
Content-Type: text/plain
------WebKitFormBoundaryXLTaUOP1FzKWJJlD--