--- includes/form.inc 2006-06-01 10:52:26.000000000 -0500 +++ includes/form-new.inc 2006-06-02 17:02:06.000000000 -0500 @@ -210,7 +210,10 @@ // and a textfield could return '0' and empty('0') returns TRUE so we // need a special check for the '0' string. if ($elements['#required'] && empty($elements['#value']) && $elements['#value'] !== '0') { - form_error($elements, t('%name field is required.', array('%name' => $elements['#title']))); + // One more specialized check for file type uploads, which store their value in the $_FILES array + if ($elements['#type'] !== 'file' || file_check_upload($elements['#parents'][0]) == false) { + form_error($elements, t('%name field is required.', array('%name' => $elements['#title']))); + } } // Add legal choice check if element has #options. Can be skipped, but then you must validate your own element.