设计的一个上传网页的页面,用的是 C#2005 中自带的上传附件的控件FileUpload上传
FileUpload1.SaveAs(Server.MapPath("../..") + "/UploadImage/" + FileUpload1.FileName)现在想限制上传的时候只能上传图片,别的不能上传,各位大虾知道的支下招啊!!

解决方案 »

  1.   

    上传之前,使用Image.ImageFrom(FileName)测试一下,如果能够创建成功,就表明是图片了,否则就不是。
      

  2.   

    对文件判断一下非图片为空返回不上传
            public static string ImageType(string filePath) 
            {
                try
                {
                    FileStream fs = new FileStream(filePath, FileMode.Open, FileAccess.Read);
                    BinaryReader reader = new BinaryReader(fs);
                    string fileClass;
                    byte buffer;
                    byte[] b = new byte[2];
                    buffer = reader.ReadByte();
                    b[0] = buffer;
                    fileClass = buffer.ToString();
                    buffer = reader.ReadByte();
                    b[1] = buffer;
                    fileClass += buffer.ToString();                reader.Close();
                    fs.Close();                switch(fileClass)
                    {
                        case "255216"://jpg
                            return "jpg";
                        case "7173"://gif
                            return "gif";  
                        case "6677"://Bmp
                            return "Bmp";
                        case "13780"://PNG
                            return "PNG";
                        default :
                            return string.Empty;
                    }
                }
                catch
                {
                    return string.Empty;
                }
            }
      

  3.   

    上传之前判断文件的类型啊,有两种方法,一种是简单的后缀名判断,不安全(别人可以改exe为gif);一种是真正的文件类型,你得到真正的文件类型,然后看看是不是图片类型。
    判断之后在决定上传与否
      

  4.   

    可以跟踪上传文件的类型 FileType,图片文件是以 Images/ 开头的。
    JPG的文件类型是 Images/JPEG
    只要不是合法的文件或不是图片文件,都可以检测出来。
      

  5.   

    string test = Server.MapPath("LinkImage/" + DateTime.Now.ToString("yyyy-MM-dd"));  //用来生成文件夹
                if (!Directory.Exists(test))
                {
                    Directory.CreateDirectory(test);
                }
                string UpId=Request.QueryString["UpId"];//传递修改ID
                if (FuImage.PostedFile.FileName != "")
                {
                    string imgname = FuImage.PostedFile.FileName;//取得全名
                    string imgType = imgname.Substring(imgname.LastIndexOf(".") + 1).ToLower();//得到扩展名并转换为小写
                    string itemNo = getImageItemNo();//得到自动编号
                    string quanname = itemNo + imgname.LastIndexOf("\\") + "." + imgType;
                    if ("gif" != imgType && "jpg" != imgType)
                    {
                        MessageBox("a00004", null);
                        return;
                    }
                    #region //判断数据库是否存在图片数据。修改重现上传时删除前次上传的。
                    if (UpId!=null)
                    {
                        sqls.Fill_DT("select urlImage  from dbo.bbs_spacelinks  where linkid="+UpId+" ", dtUrlImage);
                        string strDel = Server.MapPath(dtUrlImage.Rows[0]["urlImage"].ToString());
                        if (dtUrlImage.Rows[0]["urlImage"].ToString() != null)
                        {
                            FileInfo fileDel = new FileInfo(strDel);
                            if (fileDel.Exists)
                            {
                                fileDel.Delete();
                            }
                        }
                        string imgurl = "LinkImage/" + DateTime.Now.ToString("yyyy-MM-dd") + "/" + quanname;//保存数据的时候保存imgurl 这个就可以
                        FuImage.PostedFile.SaveAs(Server.MapPath(imgurl));
                        this.HFImageUrl.Value = imgurl;//赋给隐藏域值
                        this.imageUrl.Value = imgurl;//赋给文本框的值
                        sqls.ConClose();