注册本站  论坛  繁體中文

电脑技巧
手机 | MP3 | MP4 | 显卡 | 主板 | 显示器 | 光存储 | 笔记本 | 网络设备 | 移动存储 | 数码相机
键鼠 | CPU | 音箱 | GPS | 电视 | 服务器 | 投影机 | 机箱电源 | 品牌电脑 | 办公打印 |
| 网站首页 | Cisco | Windows | Linux | Java | Dotnet | Oracle | 网页设计 | 平面设计 | 安全 | 软件应用 | 电脑维修 | 办公维修 |
您现在的位置: 电脑技巧 >> Dotnet >> ASP.NET >> Dotnet正文

asp.net+C#实现文件上传实现代码

文章来源:中国IT实验室搜集整理 作者:佚名 更新时间:2008-6-28 20:39:42 【 】 【加入收藏

        public class CUploadFile
        {
        /// <summary>
        /// 该类实现了文件上传功能,需要指定HtmlInputFile 控件
        /// 功能1:可以对文件类型进行限制
        /// 功能2:可以对文件大小上限进行限制
        ///
        /// example:
        /// CUploadFile up;
        /// up = new CUploadFile(HtmlInputFile1);
        /// up.SvaePath = "c:\\inetpub\\wwwroot\\upload\\"; //必须指定,保存文件的路径
        /// up.AllowExtFile = ".jpg;.gif;"; //允许的类型
        /// up.MaxSize = 500 * 1024; //大小限制500k
        /// up.NewFileName = "newfile1"; //指定新的文件名,不指定则不修改
        /// int errcode = up.Start(); //开始上传
        /// string errmsg = up.GetErr(errcode); //获得错误描述信息
        /// Response.write(errmsg); //显示错误信息
        /// </summary>
        System.Web.UI.HtmlControls.HtmlInputFile _scrfile;//HtmlInputFile 控件
        string _savepath = "";//保存文件的路径
        string _newfilename = "";//文件重命名为
        string _newextfile = "";//文件后缀
        int _maxsize = 0;//文件大小限制
        string _extfile = "";//允许的后缀名,用“;”分割,包含“.”,为空时允许全部文件类型
        //构造函数,不指定任何数据

         public CUploadFile()
        {

        }


        //构造函数,指定了HtmlInputFile 控件

         public CUploadFile(System.Web.UI.HtmlControls.HtmlInputFile scrFile)
        {
        this.FileSource = scrFile;
        }


        //构造函数,指定了HtmlInputFile 控件、保存路径,文件名不作修改

         public CUploadFile(System.Web.UI.HtmlControls.HtmlInputFile scrFile, string SavePath)
        {
        this.FileSource = scrFile;
        _savepath = SavePath;
        _newfilename = scrFile.PostedFile.FileName;
        }


        //构造函数,指定了HtmlInputFile 控件、保存路径、新的文件名(不包含后缀)

         public CUploadFile(System.Web.UI.HtmlControls.HtmlInputFile scrFile, string SavePath,string NewFileName)
        {
        this.FileSource = scrFile;
        _savepath = SavePath;
        _newfilename = NewFileName;
        }


        //准备就绪后,开始上传

         public int Start()
        {
        if(_scrfile.PostedFile.ContentLength == 0)
        {
        return 504; //no source
        }
        else if((_scrfile.PostedFile.ContentLength >= _maxsize)&&(_maxsize != 0))
        {
        return 501; //out of the range
        }
        else if((_savepath == "")||(_newfilename == ""))
        {
        return 505; //no filename or path
        }
        else if(!CheckExt())
        {
        return 502; //ext is not allow
        }
        try
        {
        _scrfile.PostedFile.SaveAs(_savepath + _newfilename + _newextfile);
        return 0;
        }
        catch
        {
        return 500; //unknow error
        }
        }

        //检测后缀是否符合要求

         private bool CheckExt()
        {
        if(_extfile == "") return true;
        string [] exts = null;
        exts = _extfile.Split(new char[]{';'});
        int i = 0;
        for(i=0;i<=exts.GetUpperBound(0);i++)
        {
        if(exts[i] == _newextfile) return true;
        }
        return false;
        }


        //获取或指定HtmlInputFile控件

         public virtual System.Web.UI.HtmlControls.HtmlInputFile FileSource
        {
        get
        {
        return _scrfile;
        }
        set
        {
        string s;
        _scrfile = value;
        s = _scrfile.PostedFile.FileName;
        s = s.Substring(s.LastIndexOf('.'));
        _newextfile = s;
        }
        }


        //调用start()后,若返回值不为0,调用可获取错误信息

         public string GetErr(int errCode)
        {
        switch(errCode)
        {
        case 500:
        return "未知内部或外部的错误";
        case 501:
        return "文件大小超出限制";
        case 502:
        return "文件类型不符合规定,只允许:" + _extfile + "类型的文件";
        case 504:
        return "没有指定需要上传的文件";
        default:
        return "未知内部或外部的错误";
        }
        }


        //获取或指定文件保存路径

         public virtual string SavePath
        {
        get
        {
        return _savepath;
        }
        set
        {
        _savepath = value;
        if(_savepath.Substring(_savepath.Length) != "\\")
        {
        _savepath+="\\";
        }
        }
        }


        //获取或指定文件大小上限

         public virtual int MaxSize
        {
        get
        {
        return _maxsize;
        }
        set
        {
        _maxsize = value;
        }
        }


        //获取或指定允许的文件后缀列表,用“;”分割,包含“.”

         public virtual string AllowExtFile
        {
        get
        {
        return _extfile;
        }
        set
        {
        _extfile = value;
        }
        }


        //获取或指定新的文件名,不包含后缀

         public virtual string NewFileName
        {
        get
        {
        return _newfilename;
        }
        set
        {
        _newfilename = value;
        }
        }
        }

  • 上一篇Dotnet:

  • 下一篇Dotnet:
  • 最 新 热 门
     web.config配置文件中的 元素
     为网站添加业务层
     用SqlDataSource实现DataList嵌套DataList
     Visual Studio 2003插件的编写
     千条DOS命令收藏
     IIS 常见问题
     IIS需要的最小NTFS权限
     优化 .NET的性能
     设计模式与VB .net代码 外观模式,合成模式
     VB.net中介者模式
    最 新 推 荐
     总结必须学习的10项.NET技术
     asp.net+C#实现文件上传实现代码
     AlwaysVisibleControl控件的使用方法
     asp.net中的WebApplication和WebSite使用技…
     ShowModalDialog数据缓存的清除方法
     LinkButton的数据绑定问题
     数独求解算法
     Excel导出时数据中有特殊字符的可能会出错
     数据加密
     ASP.NET 2.0中连接字符串的设置
    相 关 文 章

    用SqlDataSource实现DataList嵌套DataList
    asp.net中的WebApplication和WebSite使用技…
    ASP.NET 2.0中连接字符串的设置
    ASP.NET页面间数据传递
    javascript对表格的控制
    Asp.net 2.0 为用户控件添加event
    扩展 ASP.NET 的客户端验证
    asp根据表单自动生成sql语句的函数
    ASP教程:自己写的数据库操作类
    ASP处理多关键词查询实例代码

    | 设为首页 | 加入收藏 | 联系站长 | 友情链接 | 版权申明 | 网站公告

     

    Copyright 2006-2008 pcjx.com All Rights Reserved
    电脑技巧 版权所有 粤ICP备06059145号 地图
    本网站所有内容未经许可不得转载或做其他使用