文档章节

C# asp.net中四种文件下载方法

深圳大道
 深圳大道
发布于 2016/12/29 15:32
字数 338
阅读 0
收藏 0
//TransmitFile实现下载
    protected void Button1_Click(object sender, EventArgs e)
    {


        Response.ContentType = "application/x-zip-compressed";
        Response.AddHeader("Content-Disposition", "attachment;filename=8月份报表.zip");
        string filename = Server.MapPath("DownLoad/8月份报表.zip");
        //指定编码 防止中文文件名乱码
        Response.HeaderEncoding = System.Text.Encoding.GetEncoding("gb2312");
        Response.TransmitFile(filename);
    }

    //WriteFile实现下载
    protected void Button2_Click(object sender, EventArgs e)
    {
        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();
    }

本文转载自:http://blog.csdn.net/smartsmile2012/article/details/7978312

深圳大道
粉丝 3
博文 877
码字总数 0
作品 0
深圳
架构师
私信 提问
周公51CTO博客有价值文章整理

说明:为方便朋友们查看本博客的文章,特地整理了本博客中周公认为值得一看的文章,不过有些文章因为年代久远且技术更新快的原因,里面所讲述的方法或者理论不再适合,请大家斟酌。 asp.net ...

周金桥
2018/06/29
0
0
asp.net 入门的五个步骤

作者: rob howard 步骤 1:下载和安装 .net sdk asp.net 是作为 .net sdk 的一部分提供的,它是创建、生成和测试基于 .net framework 的应用程序所需要的所有技术的集合。要下载和安装 .net...

晨曦之光
2012/03/09
71
0
ASP.NET Core 入门教程 1、使用ASP.NET Core 构建第一个Web应用

一、前言 1、本文主要内容 Visual Studio Code 开发环境配置 使用 ASP.NET Core 构建Web应用 ASP.NET Core Web 应用启动类说明 ASP.NET Core Web 项目结构说明 2、本教程环境信息 软件/环境 ...

ken的杂谈
2018/09/18
0
0
【经典C#.NET入门教程】管理软件开发必备知识免费视频教程下载

走火入魔通用权限管理视频讲解(娱乐大家、给生活加点儿料、突破思想框框),第三次录视频希望大家能谅解、都上传好了,给大家分享一下,不足之处请大家指点。 干事情需要要有激情,有力度,要...

sunplay
2011/06/04
0
0
Asp.Net自定义错误页心得介绍

Asp.Net自定义错误页心得介绍 抛开Try Catch 不说(这种地球人都知道),ASP.NET提供了四种错误处理机制,分别为:PageError, ErrorPage,ApplicationError,<customErrors>四种,如果加上Try...

庸人谷
2013/02/21
0
0

没有更多内容

加载失败,请刷新页面

加载更多

干货 | 解读MySQL 8.0新特性:Skip Scan Range

MySQL从8.0.13版本开始支持一种新的range scan方式,称为Loose Skip Scan。该特性由Facebook贡献。我们知道在之前的版本中,如果要使用到索引进行扫描,条件必须满足索引前缀列,比如索引idx...

迷你芊宝宝
12分钟前
0
0
观点 | 云原生时代来袭 下一代云数据库技术将走向何方?

全面云化的时代已经到来,面对一系列的新技术和挑战,数据库市场将面临怎样的变革?作为云服务提供商,如何帮助更多的企业级用户把握“云”潮,提供最高效、最具价值的数据库解决方案? 日前...

zhaowei121
21分钟前
1
0
ReentrantLock是如何基于AQS实现的

ReentrantLock是一个可重入的互斥锁,基于AQS实现,它具有与使用 synchronized 方法和语句相同的一些基本行为和语义,但功能更强大。 lock和unlock ReentrantLock 中进行同步操作都是从lock方...

java菜分享
21分钟前
0
0
比特币钱包开发【C#】

在这个教程中,我们将使用C#来开发一个比特币钱包,我们使用NBitcoin这个库。教程中的代码实现了比特币的存储、接收和支付功能,可以很容易地移植到其他应用中。 如果要快速掌握在C#程序中N...

汇智网教程
22分钟前
0
0
centos7.4编译安装nginx

1、安装准备环境 yum install gcc gcc-c++ automake pcre pcre-devel zlip zlib-devel openssl openssl-devel pcre* 下载pcre wget https://jaist.dl.sourceforge.net/project/pcre/pcre/8.......

Marhal
23分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部