我到觉得,用后缀名就可以了.就像现在我们的windows系统,你把文件的后缀名给改了,图标也会变的,它也一样不能识别出原来的文件是什么类型。再说了,可能使用者出于自己的目的把文件的后缀给改了,如:为了防止病毒,我们常常把后缀名为.exe的文件,给改成其它的,这样就可以避免一些病毒感染.反而你这时把图标给改了,用户就认不出来自己的文件了.
做网盘的话,就目前来说只能是两种方式来读取文件类型了,一种就是直接取后缀名,直接取后缀名当然会出现如果用户把rar文件改成gif后缀名的话那这个类型肯定是错的,所以比较理想的只能是使用Mime类型,而针对你说的很多类型的Mime类型都一样,你可以列举些实例么?
比较全的Mime类型链接http://akalius.javaeye.com/blog/192937。
如果你觉得这样子的方式还不能满足的话,那我觉得你可以读取下文件的头信息,从头信息中来区分文件类型。不过这样子做效率很是问题,所以我还是推荐使用Mime类型来做。
我到觉得,用后缀名就可以了。当用户上传一个文件的时候,直接保存后缀名,至于名称用户可以随便修改,但这个扩展名以第一次上传为主就是了。如果用户第一次上传也是窜改了扩展名,那就由用户好了。这个没有太大有关系。
楼上两位说得非常有道理啊,如果是用户刻意的行为,我们为什么还要“戳穿”这个行为?除非有什么特殊需求,不然取后缀非常好。
扩展名足够了,不要追求太完美。