New to Kendo UI for jQuery? Download free 30-day trial

    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.

    Open In Dojo
        <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--