<script language="javascript">
function findExt(ext) {
var exts = new Array();
exts[0] = "jpeg";
exts[1] = "gif";
exts[2] = "png";
exts[3] = "JPG";
exts[4] = "jpg";
exts[5] = "JPEG"; var i; for(i = 0; i < exts.length; i++)
{
if(ext == exts[i])
{
return true;
}
} return false;}
</script>
改扩展名好像没有办法避免不上传

解决方案 »

  1.   

    jpeg有固定的格式,在头部有该文件的信息,解析该文件的头部就可以知道是不是jpeg文件格式了.
      

  2.   

    用smartupload组件,记得它有函数可以实现,
      

  3.   

    SmartUpload su = new SmartUpload();
    // 上传初始化
    su.initialize(pageContext);su.setAllowedFilesList("jpg");
      

  4.   

    to java_jing(大侠)
    用你的方法,我把一个文件名为test.txt改为text.jpg,照样能上传的.
      

  5.   

    用js试试,在上传前动态建个<img> ,其 src 指向待上传的那个本地图片,
    接着读取<img>的width和height属性,如果都为0则说明不是图片文件。
      

  6.   

    还可以用字符串截取,如:aaa.jsp  查找"."后面的字符串"jsp"
      

  7.   

    非常感谢myy()的奇思妙想,不过错误格式的<img>width=28,height=30,不知道还有没有更好的办法,假如我的图象恰好是width=28,height=30,那就每法判断了?
      

  8.   

    用Struts的Upload组件
    只要调用FormFile的getContentType()方法就可以得到文件的类型得到的返回值就是文件类型,图片类型如下:
    BMP文件为:"image/bmp"
    JPEG文件为:"image/pjpeg"
    GIF文件为"image/gif"如果改扩展名是没有用的,因为这个检查不是检查扩展名,而是检查文件类型
      

  9.   

    只能读取前面的一部分然后判断,楼上的方法不行的
    我要是自己写一段代码,送出类型Content-Type不就蒙混过关了
      

  10.   

    楼上的你有没有用过,我这个是检测文件的类型,如果文件是jpeg格式的,那么返回的type就是:image/pjpeg"。要是按照你这么说,我还自己修改一个文件头,让它符合JPEG的格式,那么你再厉害的检查也不可能检查出来的
      

  11.   

    我用的是SmartUpload,好象没有getContentType()方法
      

  12.   

    晕,按你的要求估计只有读图片的二进制流了,jpg文件的二进制流头部分有固定格式,判断这个就行了
      

  13.   

    其实这样做的目的是防止别人上传非法不良文件,如果SmartUpload中存在getContentType()方法不也是很简单吗?!
      

  14.   

    非常感谢myy()的奇思妙想,不过错误格式的<img>width=28,height=30,不知道还有没有更好的办法,假如我的图象恰好是width=28,height=30,那就每法判断了?
    --------------------------------------------------------
    在页面用js动态创建element不是你那样写的。
    可能你对js不太熟, 请到js版找找类似的帖子看看,我也是看来的。
      

  15.   

    我只是描述一下解决办法而已,当然不会直接写"width=28,height=30".
    这个问题按我已经解决了.
      

  16.   

    你获得上传文件的文件名,然后用indexOf(".")获得“.”的位置,然后filename.substring(filename.indexof(".")) 获得文件的后缀,再对其进行判断就可以了