Index: file.inc
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/webform/components/file.inc,v
retrieving revision 1.2.2.19.2.32
diff -u -r1.2.2.19.2.32 file.inc
--- file.inc	4 Mar 2009 05:05:18 -0000	1.2.2.19.2.32
+++ file.inc	11 Apr 2009 21:38:55 -0000
@@ -294,6 +294,10 @@
   if ($component['extra']['width'] > 0) {
     $form_item[$component['form_key']]['#size'] = $component['extra']['width'];
   }
+  // Use theme_webform_file_required to set #required at the theme stage
+  if ($component['mandatory']) {
+    $form_item[$component['form_key']]['#theme'] = 'webform_file_required';
+  }
 
   return $form_item;
 }
@@ -553,6 +557,7 @@
   $filedata = unserialize($data['value']['0']);
   return empty($filedata['filename']) ? array('', '') : array($filedata['filename'], (int)($filedata['filesize']/1024));
 }
+
 /**
  * Helper function to create proper URLs for uploaded file.
  */
@@ -563,3 +568,14 @@
   }
   return isset($file_url) ? $file_url : '';
 }
+
+/**
+ * Theme function for setting required property on file
+ * form elements at the theme stage. This bypasses FAPI
+ * validation and handling, while including the visual
+ * cue for a required field.
+ */
+function theme_webform_file_required($element) {
+  $element['#required'] = TRUE;
+  return theme('file', $element);
+}
