Drupal 7 Form API - AJAX updates for multiple file uploads
The AJAX updates I wanted was to provide some progress updates which I found out I can achieve form api #ajax['progress']. I guess if I had mentioned that in the original question it would have made life a bit simpler :) :

first create a url for the ajax progress update to call:

function awsImage_menu() {
  $items = [];

  $items['path/to/page'] = [
    'title' =&gt; t('Import progress'),
    'page callback' =&gt; 'import_progress',
    'access callback' =&gt; 'user_access',
    'access arguments' =&gt; ['access awsImage'],
    'type' =&gt; MENU_CALLBACK,
  ];

  return $items;
}


then update the form to use the progress path created in the hook_menu - note the type MUST be 'bar' and the url MUST have the starting forward slash

function awsImage_form($form, &amp;$form_state) {
.....

  $form['submit'] = [
    '#type' =&gt; 'submit',
    '#value' =&gt; t('Upload'),
    '#ajax' =&gt; [
      'callback' =&gt; 'awsImage_form_callback',
      'wrapper' =&gt; 'results',
      'method' =&gt; 'append',
      'progress' =&gt; [
        'type' =&gt; 'bar',
        'url' =&gt; '/path/to/page',
        'interval' =&gt; 1000,
      ],
    ],
  ];
....

}


then create your progress function. In my original awsImage_form_callback function I created and updated a session variable: $_SESSION['awsImage']['import_status']

function import_progress() {
  // set up default progress status message
  $progress = [
    'message' =&gt; t('Starting import...'),
    'percentage' =&gt; -1,
  ];

  // check if there is any status data

    $completed = (isset($_SESSION['awsImage']['import_status'])) ? $_SESSION['awsImage']['import_status'] : false; // calculate progress percentage here

    if ($completed) {
      // there is status data, so build the status message
      $completed = unserialize($completed);
      $total_files = $completed['total'];
      $current_file = $completed['current'];
      $current_file_name = $completed['current_filename'];
      $completed_percentage = ($current_file / $total_files) * 100;

      $progress['message'] = t('Processing:' . $current_file_name);
      $progress['percentage'] = (int) $completed_percentage;
    }

  drupal_json_output($progress);
}


Now when I upload &amp; process multiple files, I get an update every second on which file I am uploading and how much there is left to go... Most of the time, sometimes the progress bar does not do any updates then just shows 100% and completes... but that may be down to local files uploading to a local server and there is not enough time!