首页 > 开发 > 综合 > 正文

C#上传文件的一个实现

2024-07-21 02:26:46
字体:
来源:转载
供稿:网友
c#上传文件的一个实现
using system;
using system.data;
using system.data.sqlclient;
using ca.components;        //全部在组件名称空间下

namespace ca.components
{
    /// <summary>
    /// general 的摘要说明。
    /// 发布日期:2002-8-8 原作者:雷神
    /// 此程序属模式小组 http://www.ai361.com/project/
    /// 在sql2000,win2000s+.net+iis5中测试通过
    /// </summary>
    public class general
    {
        private string filepath; //文件路径

        //定义一个枚举用来存放文件的信息        
        public enum file
        {
            file_size ,        //大小
            file_postname,    //
            file_sysname ,
            file_orginname,
            file_path
        };
        //构造函数
        public general()
        {
            //在web.config中设定appsettings["filepath"],用于存放文件的路径。
            filepath = system.configuration.configurationsettings.appsettings["filepath"];
        }

        /// <summary>
        /// 上传文件通用函数,此方法为静态,系统任何时候均可调用。
        /// </summary>
        /// <param name="file">参数为页面的file控件对象</param>
        /// <returns></returns>
        public static string[] uploadfile(htmlinputfile file)
        {
            string[] arr = new string[5];
            //通过系统时间生成文件名,此功能可以封闭掉,不过中文长文件名支持的不好。
            string filename = datetime.now.tostring().replace(" ","").replace(":","").replace("-","");
            string fileorginname = file.postedfile.filename.substring(file.postedfile.filename.lastindexof("//")+1);
            if(file.postedfile.contentlength<=0)
                return null;
            string  postfilename;
            string path = new general().filepath+"//";
            try
            {
                int pos = file.postedfile.filename.lastindexof(".")+1;
                postfilename = file.postedfile.filename.substring(pos,file.postedfile.filename.length-pos);
                file.postedfile.saveas(path+filename+"."+postfilename);
            }
            catch(exception exec)
            {
                throw(exec);
            }
  
            double unit = 1024;
            double size =  math.round(file.postedfile.contentlength/unit,2);
            arr[(int)file.file_size] = size.tostring();//文件大小
            arr[(int)file.file_postname] = postfilename;//文件类型(文件后缀名)
            arr[(int)file.file_sysname] = filename;//文件系统名
            arr[(int)file.file_orginname] = fileorginname;//文件原来的名字
            arr[(int)file.file_path]=path+filename+"."+postfilename;//文件路径
            return arr;
            //throw(new exception(htmlutility.htmlencode(idno.postedfile.filename)));
        }
      }
   }


if you have any question or comments,please mail to me ([email protected]) or discuss in our forum ( http://www.ai361.com/bbs).
正文完
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表