C#文件下载方法代码

//得到下载文件的ContentType

 public string GetFileContentType(string filename)
    {
        string[] array = filename.Split('.');
        string result = string.Empty;
        string suffix = "." + array[array.Length - 1];
        RegistryKey rg = Microsoft.Win32.Registry.ClassesRoot.OpenSubKey(suffix);
        object obj = rg.GetValue("Content Type");
        result = obj != null ? obj.ToString() : string.Empty;
        rg.Close();
        return result;
    }

 public bool DownloadFiles(string filePath,string fileName,out long filelengh)
    {
        filelengh = 0;
        try
        {
            //string fileName = "asd.txt";//客户端保存的文件名
            //string filePath = Server.MapPath("DownLoad/aaa.txt");//路径
            FileInfo fileInfo = new FileInfo(filePath); //filePath为文件在服务器的全路径,包含文件名。
            Response.Clear();
            Response.ClearContent();
            Response.ClearHeaders();
            Response.AddHeader("Content-Disposition", "attachment;filename=" + fileName);
            Response.AddHeader("Content-Length", fileInfo.Length.ToString());
            filelengh = fileInfo.Length;
            Response.AddHeader("Content-Transfer-Encoding", "binary");
            Response.Charset = "GB2312";
            Response.ContentType = GetFileContentType(fileName); //调用下载文件的ContentType
            Response.ContentEncoding = System.Text.Encoding.GetEncoding("gb2312");
            Response.WriteFile(fileInfo.FullName);
            Response.Flush();
            Response.End();
            return true;
        }
        catch (Exception)
        {
            return false;
        }
    }

调用方法:

 if (!IsPostBack)
        {
                string type = Request.QueryString["filetype"].ToString();
                string path =string.Empty;
                switch (type)
                {
                    case "chengguo":
                        path = "~\\Files\\";
                        break;
                    case "data":
                        path = "~\\DataFiles\\";
                        break;
                    default:
                        break;
                }
                string name = Request.QueryString["filename"].ToString();
                string fullpath = Server.MapPath(path+name);
                long filelength;
                bool su=DownloadFiles(fullpath, name, out filelength);   //调用方法
                if (!su)
                {
                    ClientScript.RegisterStartupScript(GetType(), "Message", "<SCRIPT LANGUAGE='javascript'>alert('该文件不存在,或下载出错!');</script>");
                }
        }

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值