那这样,换一个角度思考。
我还是做检测,不允许,*.jar *.jsp *.html *.txt *.asp *.php *.war *.exe上传。
还是要做真正的检测,而不是后缀的。如何实现呢??

解决方案 »

  1.   

    如果你用的是struts2.0的话,就非常容易实现你所想的.直接通过配置你的文件上传类型在struts.xml中,然后将你传入的文件一一匹配就OK
      

  2.   

    你只能逐个类型判断是否你不希望接收的:*.jar、*.war其实就是 *.zip,一样的格式的,你可以使用ZipInputStream尝试打开它,如果成功打开则抛错误*.jsp *.html *.txt *.asp *.php 这样你可以看看它们是否都不包含一些不可见字符这样的方法*.exe 一般是以MZ字母开头,你可以大概这样判断一下
      

  3.   

    我觉得完美的实现楼主的需求是基本上不可行的,例如exe文件,好像确实是以4D 5A开头,但你不能保证非exe文件就一定不是4D 5A开头。
    大概只能在一定限度上去判断某些文件类型,比如我可以通过jdk提供的图像处理类,明确的判断上传的文件是否是图片、是什么格式的图片。
    还是从需求上入手,能简化就简化吧。。花大量的时间在研究文件格式、写出成千上万文件格式验证的代码,感觉有点得不偿失。
      

  4.   

    解决办法:
    http://www.cnblogs.com/jackliu185/archive/2009/07/17/1525695.html