我搜了个C#上传网页的例子
<input id="File1" style="Z-INDEX: 102; LEFT: 176px; POSITION: absolute; TOP: 80px" type="file" name="File1" runat="server"/>
<asp:Label id="Label2" style="Z-INDEX: 103; LEFT: 32px; POSITION: absolute; TOP: 80px" runat="server"
            Width="128px">选择要上传的文件</asp:Label>
<asp:Button id="btnUpload" style="Z-INDEX: 104; LEFT: 32px; POSITION: absolute; TOP: 112px"
runat="server" Width="80px" Text="开始上传" onclick="btnUpload_Click"></asp:Button>
<asp:RequiredFieldValidator id="RequiredFieldValidator1" style="Z-INDEX: 105; LEFT: 416px; POSITION: absolute; TOP: 88px"
runat="server" Font-Size="Smaller" Font-Bold="True" ErrorMessage="请选择要上传的文件" ControlToValidate="File1"></asp:RequiredFieldValidator>
<asp:Image id="Image1" style="Z-INDEX: 106; LEFT: 32px; POSITION: absolute; TOP: 224px" runat="server"></asp:Image>
<asp:Label id="Label3" style="Z-INDEX: 107; LEFT: 32px; POSITION: absolute; TOP: 168px" runat="server"></asp:Label>
后台
 protected void btnUpload_Click(object sender, EventArgs e)
    {        string fileFullname = this.File1.PostedFile.FileName;
        long aa = this.File1.PostedFile.InputStream.Length;
        double bb = aa / 1024;
        double cc = bb / 1024;
        //if (aa >= (1024 * 1024 * 3))
        //{
        //    Response.Write("<script language='javascript'>alert('文件最大不能超过3M!');</script>");
        //    return;
        //}
        //取出当前日期
        string dataName = DateTime.Now.ToString("yyyyMMddhhmmss");
        //取文件扩展名
        string fileName = fileFullname.Substring(fileFullname.LastIndexOf("\\") + 1);
        //截取上传文件的扩展名既"."后面的字母所以+1
        string type = fileFullname.Substring(fileFullname.LastIndexOf(".") + 1);
        //类型控制,想上传什么类型,可以在这里类似添加
        if (type == "JPG" || type == "jpg" || type == "gif" || type == "bmp")
        {
            this.File1.PostedFile.SaveAs(Server.MapPath("pic") + "\\" + dataName + fileName);
            Response.Write("<script language='javascript'>alert('上传成功!');</script>");
            //image1输出上传图片,可以在这里控制图片大小
            this.Image1.ImageUrl = "pic" + "\\" + dataName + fileName;
        }
        else
        {
            Response.Write("<script language='javascript'>alert('你选的文件类型不符!');</script>");
        }
    }
但是老出错,有的文件上传成功,有的时候显示无法连接该页不知道为什么,是不是上传的文件大小有限制,那位对RequiredFieldValidator熟悉,请教......

解决方案 »

  1.   

    public class UpLoadFiles : System.Web.UI.Page
    {
        public UpLoadFiles()
        {
            //
            // TODO: 在此处添加构造函数逻辑
            //
        }    public string UploadFile(string filePath,int maxSize,string[] fileType,System.Web.UI.HtmlControls.HtmlInputFile TargetFile)
        {
                string Result = "UnDefine";
                bool typeFlag = false;
                string FilePath = filePath;
                int MaxSize = maxSize;
                string strFileName,strNewName,strFilePath;
                if (TargetFile.PostedFile.FileName=="")
                {
                    return "FILE_ERR";
                }
                strFileName = TargetFile.PostedFile.FileName;
                TargetFile.Accept = "*/*";
                strFilePath = FilePath;
                if (Directory.Exists(strFilePath)==false)
                { 
                    Directory.CreateDirectory(strFilePath);
                }
                FileInfo myInfo=new FileInfo(strFileName);  
                string strOldName=myInfo.Name;
                strNewName=strOldName.Substring(strOldName.Length-3,3); 
                strNewName = strNewName.ToLower();
                if( TargetFile.PostedFile.ContentLength <= MaxSize)
                {
                    for(int i = 0;i<=fileType.GetUpperBound(0);i++)
                    {
                        if (strNewName.ToLower() == fileType[i].ToString()){typeFlag = true;break;}
                    }
                    if(typeFlag)
                    {  
                        string strFileNameTemp = GetUploadFileName();
                        string strFilePathTemp = strFilePath ;
                        float strFileSize = TargetFile.PostedFile.ContentLength / 1024;
                        strOldName = strFileNameTemp + "." +strNewName;     
                        strFilePath=strFilePath + "\\" + strOldName;    
                        TargetFile.PostedFile.SaveAs(strFilePath);
                        Result = strOldName + "|" + strFileSize;
                        TargetFile.Dispose();
                    }
                    else
                    {
                        return "TYPE_ERR";
                    }
                }
                else
                {
                    return "SIZE_ERR";
                }
                return(Result);
            }    public string UploadFile(string filePath,int maxSize,string[] fileType, string filename, System.Web.UI.HtmlControls.HtmlInputFile TargetFile)
        {
            string Result = "UnDefine";
            bool typeFlag = false;
            string FilePath = filePath;
            int MaxSize = maxSize;
            string strFileName,strNewName,strFilePath;
            if (TargetFile.PostedFile.FileName=="")
            {
                return "FILE_ERR";
            }
            strFileName = TargetFile.PostedFile.FileName;
            TargetFile.Accept = "*/*";
            strFilePath = FilePath;
            if (Directory.Exists(strFilePath)==false)
            { 
                Directory.CreateDirectory(strFilePath);
            }
            FileInfo myInfo=new FileInfo(strFileName);  
            string strOldName=myInfo.Name;
            strNewName=strOldName.Substring(strOldName.Length-3,3); 
            strNewName = strNewName.ToLower();
            if( TargetFile.PostedFile.ContentLength <= MaxSize)
            {
                for(int i = 0;i<=fileType.GetUpperBound(0);i++)
                {
                    if (strNewName.ToLower() == fileType[i].ToString()){typeFlag = true;break;}
                }
                if(typeFlag)
                {  
                    string strFileNameTemp = filename;
                    string strFilePathTemp = strFilePath ;
                    strOldName = strFileNameTemp + "." +strNewName;     
                    strFilePath=strFilePath + "\\" + strOldName;    
                    TargetFile.PostedFile.SaveAs(strFilePath);
                    Result = strOldName;
                    TargetFile.Dispose();
                }
                else
                {
                    return "TYPE_ERR";
                }
            }
            else
            {
                return "SIZE_ERR";
            }
            return(Result);
        }    private string GetUploadFileName()
        {
            string Result = "";
            DateTime time = DateTime.Now;   
            Result += time.Year.ToString() + FormatNum(time.Month.ToString(),2) + FormatNum(time.Day.ToString(),2) + FormatNum(time.Hour.ToString(),2) + FormatNum(time.Minute.ToString(),2) + FormatNum(time.Second.ToString(),2)  + FormatNum(time.Millisecond.ToString(),3) ;
            return(Result);
        }    public string FormatNum(string Num, int Bit)
        {
            int L;
            L = Num.Length;
            for (int i = L; i < Bit; i++)
            {
                Num = "0" + Num;
            }
            return (Num);
        }
            
    }
    调用代码:
    string path="";
    path = Server.MapPath("路径");
    if (!Directory.Exists(path)) 
    {
        Directory.CreateDirectory(path);
    }
    if(this.file.PostedFile.FileName != "")
    {
        string[] filetype = new string[]{"jpg","gif"};
        string filename = new UpLoadFiles().UploadFile(path, 1000000, filetype, file); //1000000单位是字节
    }
      

  2.   

    查看web.config是否限制了上传文件大小
      

  3.   

    找个jquery 的上传插件吧,简单好用又美观
      

  4.   

    http://tech.it168.com/a2009/0216/265/000000265561.shtml
      

  5.   

    上传文件大写默认最大为2M 当上传过大文件时会出错的。
    在服务器的IIS上可以修改上传大小,不过不建议改太大