The finfo function is returning crazy mime types. Look the following code, what is going on?
finfo
Have you checked your server's mime type definitions? I assume it uses the servers definitions just like browsers use the client computers definition for uploaded files.