diff --git modules/file/file.field.inc modules/file/file.field.inc
index 9a20922..fdc635a 100644
--- modules/file/file.field.inc
+++ modules/file/file.field.inc
@@ -648,7 +648,9 @@ function file_field_widget_process($element, &$form_state, $form) {
   // Adjust the AJAX settings so that on upload and remove of any individual
   // file, the entire group of file fields is updated together.
   if ($field['cardinality'] != 1) {
-    $new_path = preg_replace('/\/\d+\//', '/', $element['remove_button']['#ajax']['path'], 1);
+    $parents = $element['#array_parents'];
+    array_pop($parents);
+    $new_path = 'file/ajax/' . implode('/', $parents) . '/' . $form['form_build_id']['#value'];
     $field_element = drupal_array_get_nested_value($form, array_slice($element['#array_parents'], 0, -1));
     $new_wrapper = $field_element['#id'] . '-ajax-wrapper';
     foreach (element_children($element) as $key) {
diff --git modules/file/file.module modules/file/file.module
index a1b4450..8aed89f 100644
--- modules/file/file.module
+++ modules/file/file.module
@@ -360,7 +360,7 @@ function file_managed_file_process($element, &$form_state, $form) {
   $element['#tree'] = TRUE;
 
   $ajax_settings = array(
-    'path' => 'file/ajax/' . implode('/', $element['#parents']) . '/' . $form['form_build_id']['#value'],
+    'path' => 'file/ajax/' . implode('/', $element['#array_parents']) . '/' . $form['form_build_id']['#value'],
     'wrapper' => $element['#id'] . '-ajax-wrapper',
     'effect' => 'fade',
     'progress' => array(
