//TransmitFile实现下载 
    protected void Button1_Click(object sender, EventArgs e)
    {
        /* 
        微软为Response对象提供了一个新的方法TransmitFile来解决使用Response.BinaryWrite 
        下载超过400mb的文件时导致Aspnet_wp.exe进程回收而无法成功下载的问题。 
        代码如下: 
        */

Response.ContentType = "application/x-zip-compressed";
        Response.AddHeader("Content-Disposition", "attachment;filename=z.zip");
        string filename = Server.MapPath("DownLoad/z.zip");
        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();
    }

//----------------------------------------------------------

public void DownloadFile( System.Web.UI.Page WebForm,String FileNameWhenUserDownload ,String FileBody )
{

  WebForm.Response.ClearHeaders();
WebForm.Response.Clear();
WebForm.Response.Expires = 0;
WebForm.Response.Buffer = true;
WebForm.Response.AddHeader("Accept-Language", "zh-tw");
//'文件名称
WebForm.Response.AddHeader("content-disposition", "attachment; filename='"+System.Web.HttpUtility.UrlEncode(FileNameWhenUserDownload, System.Text.Encoding.UTF8)+"'");
WebForm.Response.ContentType = "Application/octet-stream";
//'文件内容
WebForm.Response.Write(FileBody);//-----------
    WebForm.Response.End();
}

//上面这段代码是下载一个动态产生的文本文件,若这个文件已经存在于服务器端的实体路径,则可以通过下面的函数:

public void DownloadFileByFilePath( System.Web.UI.Page WebForm,String FileNameWhenUserDownload ,String FilePath )
{
WebForm.Response.ClearHeaders();
WebForm.Response.Clear();
WebForm.Response.Expires = 0;
    WebForm.Response.Buffer = true;
WebForm.Response.AddHeader("Accept-Language", "zh-tw");
//文件名称
WebForm.Response.AddHeader("content-disposition", "attachment; filename='" + System.Web.HttpUtility.UrlEncode(FileNameWhenUserDownload, System.Text.Encoding.UTF8) +"'" );
WebForm.Response.ContentType = "Application/octet-stream";
//文件内容
WebForm.Response.Write(System.IO.File.ReadAllBytes(FilePath));//---------
WebForm.Response.End();
}

分类: C# Asp.net
本文转自快乐就好博客园博客,原文链接:http://www.cnblogs.com/happyday56/archive/2008/05/15/1199125.html,如需转载请自行联系原作者

asp.net实现下载相关推荐

  1. 黑鹰ASP教程(全部)下载

    黑鹰ASP教程(全部)下载 [url]http://down.dzfly.com/hacker/3800/asp/lesson1.rar[/url] [url]http://down.dzfly.co ...

  2. 解析:如何在 ASP.NET 中下载文件

    解析:如何在 ASP.NET 中下载文件 来源:博客园 作者:dotnetWalker 这是笔者常被问到的一个问题,如何通过ASP.NET来下载文件,这个问题可大可小,我们先从小的开始.当我们要让用户 ...

  3. 分享66个ASP上传下载源码,总有一款适合您

    分享66个ASP上传下载源码,总有一款适合您 66个ASP上传下载源码下载链接:https://pan.baidu.com/s/1AAZA99BVNOFtVFIjnYl4XA?pwd=vyqa  提取 ...

  4. asp.net 探针下载_光探针代理卷:5.4功能展示

    asp.net 探针下载 Unity 5.4已进入测试版,并且出色的功能是Light Probe Proxy Volume(LPPV). 我只是想与您分享所有内容,工作流程和一些小实验以展示其实际效果 ...

  5. 如何在 ASP.NET 中下载文件

    这是笔者常被问到的一个问题,如何通过ASP.NET来下载文件,这个问题可大可小,我们先从小的开始.当我们要让用户下载一个文件,最简单的方式是通过Response.Redirect指令: 殇﹖ ☆粉汐げ ...

  6. 分享111个ASP上传下载源码,总有一款适合您

    分享111个ASP上传下载源码,总有一款适合您 111个ASP上传下载源码下载链接:https://pan.baidu.com/s/1VaiX2JZqyBue8g_x7bsrZA?pwd=szji  ...

  7. 分享116个ASP上传下载源码,总有一款适合您

    分享116个ASP上传下载源码,总有一款适合您 116个ASP上传下载源码下载链接:https://pan.baidu.com/s/1loHIyl9LUAkyPBedFpkRQw?pwd=fflw  ...

  8. ASP实现隐藏下载地址和防盗

    以下为引用的内容: <% FunctIon DownloadFIle(StrFIle) StrFIlename=StrFIle Response.Buffer=True Response.Cle ...

  9. 第十八天:WEB攻防-ASP安全MDB下载植入IIS短文件名写权限解析

    Windows 2003(操作系统) + IIS(中间件)+Asp(源码脚本语言)+Access(数据库) Windows 2003(操作系统)网上有教程 建站 建站完毕后,在xss这块儿点击属性,然 ...

最新文章

  1. 获取两个数百分比的值
  2. 4g模块注册上网 移远_Openwrt实现4G模块上网功能
  3. 初学者可能不知道的 vue.js技巧
  4. 数组去重的各种方法速度对比
  5. 作为程序员之正则表达式
  6. string对象和C风格字符串
  7. VS调试启动编辑并继续功能
  8. 软件_搭建rtmp视频推送环境,腾讯云,ubuntu16
  9. php m.baidu.com,http://m.baidu.com/baidu.php?u
  10. Leetcode 24——Swap Nodes in Pairs
  11. meta refresh 刷新
  12. 吴恩达机器学习正则化线性回归和偏差算法的MATLAB实现(对应ex5练习)
  13. 谷歌pagerank算法(谷歌搜索引擎的pagerank算法的原理)
  14. java合并图片合成多张横向或竖向
  15. 实验吧CTF天网管理系统
  16. 微信小程序----第二天(小程序 - 模板与配置)
  17. 驱动学习笔记 IRP
  18. apollo新增扩展consul注册中心
  19. 等保测评 安全计算坏境之linux操作系统
  20. iphone同步android短信恢复,android上的短信怎么恢复到iphone

热门文章

  1. python安装venv_Python创建virtualenv(虚拟环境)方法及安装Ubuntu
  2. 《思科UCS服务器统一计算》一1.2 数据中心的演变
  3. mybatis oracle批量修改
  4. 正则表达式30分钟教程
  5. python安装的模块在pycharm中能用吗_pycharm内无法import已安装的模块问题解决
  6. Python之面向对象进阶系列
  7. 设计模式(二)工厂模式
  8. Laravel+nginx环境配置好后,url加参数提交报404错误
  9. Centos 更改系统时间
  10. elasticsearch 复杂查询小记