.Net下载文件

  #region 下载文件
        /// <summary>
        /// 下载文件
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void download_Click(object sender, EventArgs e)
        {
            try
            {
                // 获取文件在服务器的地址 
                string filePath = Path.Combine(System.Configuration.ConfigurationManager.AppSettings["人员文件"], TemplatePath.Value);

                // 判断传输地址是否为空 
                if (!File.Exists(filePath))
                {
                    this.ShowMassage("当前文件不存在或已经被删除。");
                    return;
                }

                // url为文件名时,直接获取文件名 
                string fileNames = TemplateName.Value;

                // 以字符流的方式下载文件 
                FileStream fs = new FileStream(filePath, FileMode.Open);
                byte[] bytes = new byte[(int)fs.Length];
                fs.Read(bytes, 0, bytes.Length);
                fs.Close();
                Response.ContentType = "application/octet-stream";

                // 兼容IE
                if (Request.Browser.Browser == "IE")
                {
                    int str = fileNames.IndexOf("#");
                    if (str > -1)
                    {
                        fileNames = HttpUtility.UrlEncode(fileNames, System.Text.Encoding.UTF8);
                    }
                    else
                    {
                        fileNames = HttpUtility.UrlPathEncode(fileNames);
                    }
                }

                // 通知浏览器下载
                string headerValue = string.Format("attachment; filename=\"{0}\"", fileNames);
                Response.AddHeader("Content-Disposition", headerValue);
                Response.BinaryWrite(bytes);
                Response.Flush();
                Response.End();
            }
            catch (Exception ex)
            {
                this.ShowMassage("操作失败:" + ex.Message);
            }
        }
        #endregion

posted @ 2017-10-09 18:34  亘古不变  阅读(168)  评论(0编辑  收藏  举报