Index: form.inc =================================================================== RCS file: /cvs/drupal/drupal/includes/form.inc,v retrieving revision 1.265.2.10 diff -u -p -r1.265.2.10 form.inc --- form.inc 13 Aug 2008 23:59:12 -0000 1.265.2.10 +++ form.inc 25 Aug 2008 16:49:07 -0000 @@ -846,7 +846,7 @@ function form_error(&$element, $message * $_POST data. */ function form_builder($form_id, $form, &$form_state) { - static $complete_form, $cache; + static $complete_form, $cache, $file; // Initialize as unprocessed. $form['#processed'] = FALSE; @@ -937,9 +937,20 @@ function form_builder($form_id, $form, & if (isset($form['#cache'])) { $cache = $form['#cache']; } - // We are on the top form, we can copy back #cache if it's set. - if (isset($form['#type']) && $form['#type'] == 'form' && isset($cache)) { - $form['#cache'] = TRUE; + // If there is a file element, we need to flip a static flag so later the + // form encoding can be set. + if ($form['#type'] == 'file') { + $file = TRUE; + } + if (isset($form['#type']) && $form['#type'] == 'form') { + // We are on the top form, we can copy back #cache if it's set. + if (isset($cache)) { + $form['#cache'] = TRUE; + } + // If there is a file element, we set the form encoding. + if (isset($file)) { + $form['#attributes']['enctype'] = 'multipart/form-data'; + } } return $form; }