`

.net下载文件的常用方法汇总

    博客分类:
  • .NET
阅读更多
//TransmitFile实现下载  
         protected void Button1_Click1(object sender, EventArgs e)  
        {  
            /*  
             微软为Response对象提供了一个新的方法TransmitFile来解决使用Response.BinaryWrite  
             下载超过400mb的文件时导致Aspnet_wp.exe进程回收而无法成功下载的问题。  
             代码如下:  
             */  
            string strFileName = "三部闲置设备管理系统操作手册IEMS.ppt";  
            Response.ContentType = "application/x-zip-compressed";  
            //Response.ContentEncoding = System.Text.Encoding.GetEncoding("gb2312");  
            string filename = BLL.Config.PART_EM_UPLOAD_DOC + strFileName;   
            //BLL.Config.PART_EM_UPLOAD_DOC 为路径   ("D:/EMUploadDoc/")  
            Response.AddHeader("Content-Disposition", "attachment;filename=" +Server.UrlPathEncode(strFileName));  
           //Server.UrlPathEncode()解决文件名的乱码问题.  
              
            Response.TransmitFile(filename);  
        }    //WriteFile实现下载  
    protected void Button2_Click(object sender, EventArgs e)  
    {  
        /*  
         using System.IO;  
           
         */  
        string fileName = "asd.txt";//客户端保存的文件名  
        string filePath = Server.MapPath("DownLoad/aaa.txt");//路径  
        FileInfo fileInfo = new FileInfo(filePath);  
        Response.Clear();  
        Response.ClearContent();  
        Response.ClearHeaders();  
        Response.AddHeader("Content-Disposition", "attachment;filename=" + fileName);  
        Response.AddHeader("Content-Length", fileInfo.Length.ToString());  
        Response.AddHeader("Content-Transfer-Encoding", "binary");  
        Response.ContentType = "application/octet-stream";  
        Response.ContentEncoding = System.Text.Encoding.GetEncoding("gb2312");  
        Response.WriteFile(fileInfo.FullName);  
        Response.Flush();  
        Response.End();  
    }  
    //WriteFile分块下载  
    protected void Button3_Click(object sender, EventArgs e)  
    {  
        string fileName = "aaa.txt";//客户端保存的文件名  
        string filePath = Server.MapPath("DownLoad/aaa.txt");//路径  
        System.IO.FileInfo fileInfo = new System.IO.FileInfo(filePath);  
        if (fileInfo.Exists == true)  
        {  
            const long ChunkSize = 102400;//100K 每次读取文件,只读取100K,这样可以缓解服务器的压力  
            byte[] buffer = new byte[ChunkSize];  
            Response.Clear();  
            System.IO.FileStream iStream = System.IO.File.OpenRead(filePath);  
            long dataLengthToRead = iStream.Length;//获取下载的文件总大小  
            Response.ContentType = "application/octet-stream";  
            Response.AddHeader("Content-Disposition", "attachment; filename=" + HttpUtility.UrlEncode(fileName));  
            while (dataLengthToRead > 0 && Response.IsClientConnected)  
            {  
                int lengthRead = iStream.Read(buffer, 0, Convert.ToInt32(ChunkSize));//读取的大小  
                Response.OutputStream.Write(buffer, 0, lengthRead);  
                Response.Flush();  
                dataLengthToRead = dataLengthToRead - lengthRead;  
            }  
            Response.Close();  
        }  
    }  
    //流方式下载  
    protected void Button4_Click(object sender, EventArgs e)  
    {  
        string fileName = "aaa.txt";//客户端保存的文件名  
        string filePath = Server.MapPath("DownLoad/aaa.txt");//路径  
        //以字符流的形式下载文件  
        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";  
        //通知浏览器下载文件而不是打开  
        Response.AddHeader("Content-Disposition", "attachment;  filename=" + HttpUtility.UrlEncode(fileName, System.Text.Encoding.UTF8));  
        Response.BinaryWrite(bytes);  
        Response.Flush();  
        Response.End();  
    }  

 

C#:

/// <summary> /// 文件下载 /// </summary> /// 
 private void FileDownload(string FullFileName) 
{ FileInfo DownloadFile = new FileInfo(FullFileName);
 Response.Clear();
 Response.ClearHeaders();
 Response.Buffer=false; 
Response.ContentType= "application/octet-stream ";
 Response.AppendHeader( "Content-Disposition ", "attachment;filename= " +HttpUtility.UrlEncode(DownloadFile.FullName,System.Text.Encoding.UTF8)); 
Response.AppendHeader( "Content-Length ",DownloadFile.Length.ToString());
 Response.WriteFile(DownloadFile.FullName);
 Response.Flush(); 
Response.End();
 }
 

 

 

分享到:
评论

相关推荐

    ASP.NET程序中常用代码汇总

    本篇文章将汇总ASP.NET程序中的一些常用代码片段,以帮助开发者提高开发效率和解决常见问题。 1. **页面生命周期管理** - `Page_Load`:页面加载事件,用于初始化页面数据。 - `PreRender`:在页面呈现之前调用,...

    ASP.NET程序中常用代码汇总(二)

    ASP.NET 是一种基于微软.NET Framework的服务器端编程技术,用于构建功能丰富的Web应用程序。在ASP.NET程序中,开发者经常会遇到各种编程场景,本篇将聚焦于ASP.NET中的自定义异常处理这一重要知识点。 异常处理是...

    查看本机.NET Framework版本信息方法汇总

    ### 查看本机.NET Framework版本信息方法汇总 在IT领域中,.NET Framework是微软推出的一个强大开发平台,被广泛应用于Windows应用程序的开发之中。有时我们需要确定安装在计算机上的.NET Framework的具体版本,...

    ASP.Net 常用代码汇总

    这个"ASP.Net 常用代码汇总"很可能是包含了大量在开发ASP.NET项目时可能会用到的实用代码片段和示例。这些代码可能涵盖了许多关键的开发主题,如页面生命周期、控件事件处理、数据绑定、用户身份验证、状态管理以及...

    C#函数方法集,汇总c#.net常用函数和方法集

    本文将详细解析"C#函数方法集",帮助开发者掌握C#中的常用函数和方法。 1. **基础函数与方法** C#的基础函数包括数学运算、字符串操作、数组处理等。例如,`Console.WriteLine()`用于在控制台输出文本,`Math`类...

    asp.net 文件上传实例汇总

    本文汇总了***中文件上传的三种常见方法,并对一些细节上的区别进行了说明,目的是为了帮助.NET入门者能够更加轻松地实现文件上传功能。 首先,***通过封装大量的功能在类库中,使得文件上传变得简单。在介绍三种...

    asp.net常用代码汇总

    这个"asp.net常用代码汇总"很可能包含了多种常见的ASP.NET编程场景中的实用代码片段,帮助开发者快速解决常见问题或者提高开发效率。下面,我将详细讲解ASP.NET中的关键概念和技术,并尝试解读可能包含在这些代码...

    汇总c#.net常用函数和方法

    根据提供的文件信息,我们可以归纳出一系列与C# .NET编程相关的常用函数和方法知识点。以下是对这些函数和方法的详细解释: ### 1. `System.DateTime` 类 #### 1.1 获取当前时间 ```csharp DateTime currentTime ...

    汇总c#.net常用函数和方法集

    在C#.NET编程中,掌握常用的函数和方法是提高开发效率和编写高质量代码的关键。本文将详细介绍一些在C#.NET中频繁使用的函数和方法,帮助开发者更好地理解和运用这些工具。 一、字符串操作 1. `string....

    C#(.net)的几种加密解密方式

    这是C#的几种加密和解密的方法,里面包含Base64的加密和解密,MD5的加密,SHA1的加密和解密,文件夹的加密和解密

    .net常用知识汇总

    ASP.NET知识库,里面包括了.net常用的知识,如:xml文件的操作,数据库的操作,文件操作等等

    C#(.NET)常用函数汇总

    在.NET框架中,C#是一种强大的面向对象的编程语言,被广泛用于开发各种应用程序,从桌面应用到Web应用,再到移动应用。C#拥有一系列内置的函数和类库,帮助开发者高效地实现功能。本篇文章将深入探讨C#中的一些常用...

    .NET原创技术实例汇总

    这个压缩包文件,名为".NET原创技术实例汇总",显然包含了一系列与.NET相关的技术实例,可能是为了帮助开发者深入理解和应用.NET技术。下面将详细讨论.NET框架的一些核心概念和重要特性,以及可能在实例中涉及的技术...

    C#函数方法集,汇总c#.net常用函数和方法集TXT格式,非常好的教程。

    - `Console.WriteLine()`: 用于在控制台打印文本,是C#中最常用的方法之一。 - `Console.ReadLine()`: 从控制台读取用户输入的一行文本。 - `int.Parse()` 和 `int.TryParse()`: 将字符串转换为整数,`TryParse`...

    .NET经典代码总汇

    9. **.NET Framework类库**:如System.IO用于文件和流操作,System.Net用于网络通信,System.Xml处理XML数据等。 10. **Windows Forms与WPF**:两种常见的.NET桌面应用开发框架,分别基于Win32 API和XAML。 11. **...

    汇总c#.net常用函数和方法集.txt

    根据提供的文件信息,我们可以整理出一系列关于C# .NET中常用函数和方法的知识点,具体如下: ### 一、DateTime类及其用法 1. **创建DateTime实例:** ```csharp System.DateTime currentTime = new System....

    c#.net常用的小函数和方法集读书笔记

    这份读书笔记汇总了C#.NET中常见的高效、便捷的函数和方法,旨在帮助开发者更好地理解和运用这些工具,提高代码质量和可维护性。 一、字符串操作 字符串在编程中扮演着重要角色,C#.NET提供了丰富的字符串处理方法...

Global site tag (gtag.js) - Google Analytics