We had this same problem. Found this site that explains the solution:
A couple of days ago I was working with a client who was having trouble using the File Upload Control from within a DotNetNuke module.
The problem we were seeing was that although all the code had been written correctly and looked just like every other implementation of the code I had ever used when the server side tested to see if a file had been uploaded, the file was not there… even though we had just uploaded a file.
What The Expletive?
A search of Google showed that the FileUpload control doesn’t work with the Update Panel. So I asked the client, “Are you using the Update Panel?” No, he wasn’t. Odd, it sure is acting like he is.
As things turned out he was using the Update Panel, only he didn’t know he was because this is DotNetNuke we are using. In DotNetNuke all you have to do to use an Update Panel, and in fact all you SHOULD do is to tell DotNetNuke that your module is going to use the Update Panel is to check the “Partial Rendering” check box when you define the module under module definitions.
So if you are having a problem with the FileUpload and haven’t checked the module definitions yet, go there now. Bet you it’s checked. Uncheck it and you’ll be able to use the file upload control.