<form enctype="multipart/form-date" action="_url_" method="post">
<input type="hidden" name="max_file_size" value="30000">
上传文件:<input name="userfile" type="file">
<input type="submit" value="提交">这段文件上传的如何改成只允许上传图片的呢?
支持jpg.gif.bmp三种格式的

解决方案 »

  1.   

    1 用 getimagesize 过滤一下文件类型.
    2 再用 mime 去滤一下图片类型.
      

  2.   

    eregi('\.(gif|jpg|bmp|jpeg)',$imgname)
      

  3.   

    if(!($in['Photo']['type'] =="image/pjpeg" || $in['Photo']['type'] == "image/gif" 
     || $in['Photo']['type'] == "image/x-png")) 
    {
    new Error('系统只允许上传GIF、JPG、PNG格式的图片','图片格式错误','', $tpl);
    }
      

  4.   

    单纯的检验后缀名好象没用吧,如果我把被的格式的文件改成jpg的后缀文件也可以上传啊,这个怎么屏蔽呢?
      

  5.   

    回复人:mrshelly(Shelly) ( 两星(中级)) 信誉:100  2007-8-3 9:46:41  得分:0
    ?  1 用 getimagesize 过滤一下文件类型.
    2 再用 mime 去滤一下图片类型.这个做法是危险的,有漏洞,必须严格检查后缀。
      

  6.   

    楼上的说反了吧?严格检查后缀和getimagesize()、mime检查哪个危险?
      

  7.   

    function check_upFile()
    {
    var file_type =[".gif",".jpg",".jpeg",".bmp",".png",".pdf",".doc",".xls",".zip",".rar"]
    var upload_file = document.getElementById("userfile").value;
    var if_return = true;
    if (upload_file == ""){
    alert(" Please choose a file to upload");
    return false;
    }
    for(i=0;i<file_type.length;i++){
    if(upload_file.indexOf(file_type[i]) != -1){
    if_return = false;
    break;
    }
    }
    if(if_return){
    alert(" Please upload .gif/.jpg/.jpeg/.bmp/.png/.pdf/.doc/.xls/.zip/.rar files only");
    document.getElementById("userfile").value="";
    document.getElementById("userfile").focus();
    return false;
    }
    }
      

  8.   

    <form enctype="multipart/form-date" action="_url_" method="post"  onSubmit="javscript:return check_upFile();">
    <input type="hidden" name="max_file_size" value="30000">
    上传文件:<input name="userfile" type="file">
    <input type="submit" value="提交">
      

  9.   

    通过javascript来实现
    if (document.form1.userfile.value !="")
    {
    var a=GetFileExt(document.form1.userfile);
    if (a!="jpg" && a!="gif" && a!="bmp" && a!="JPG" && a!="GIF" && a!="BMP")
    {
    alert("图片的格式有误!");
    return false;
    }
    }
    //获取其文件名的后缀
    function GetFileExt(o)
    {
        return o.value.replace(/.+\./,"");
    }
      

  10.   

    单纯用客户端不好吧,如果我禁用javascript这种验证就没用了。还要加上服务端验证。食尸鬼的服务端验证不错。