博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C# 文件下载四方法
阅读量:5167 次
发布时间:2019-06-13

本文共 2973 字,大约阅读时间需要 9 分钟。

  • using
    System;
    using
    System.Data;
    using
    System.Configuration;
    using
    System.Web;
    using
    System.Web.Security;
    using
    System.Web.UI;
    using
    System.Web.UI.WebControls;
    using
    System.Web.UI.WebControls.WebParts;
    using
    System.Web.UI.HtmlControls;
    using
    System.IO;
     
    public
    partial
    class
    _Default : System.Web.UI.Page
    {
    protected
    void
    Page_Load(
    object
    sender, EventArgs e)
    {
     
    }
     
    //TransmitFile实现下载
    protected
    void
    Button1_Click(
    object
    sender, EventArgs e)
    {
    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)
    {
    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();
     
    }
    }

转自:

转载于:https://www.cnblogs.com/shangshen/p/3532708.html

你可能感兴趣的文章
msp430项目编程13
查看>>
【IIS】IIS 7.0/7.5 绑定
查看>>
[SQL] 命令远程恢复数据库
查看>>
用Python3实现的Mycin专家系统简单实例
查看>>
TortoiseSVN tutorial
查看>>
poj-2376 Cleaning Shifts (排序+贪心)
查看>>
mssql 创建触发器
查看>>
2.python数据结构的性能分析
查看>>
jquery操作select(取值,设置选中)
查看>>
在Android中自定义捕获Application全局异常,可以替换掉系统的强制退出对话框(很有参考价值与实用价值)...
查看>>
1.开发准备
查看>>
centos su命令
查看>>
CLR:基元类型、引用类型和值类型
查看>>
dubbo序列化hibernate.LazyInitializationException could not initialize proxy - no Session懒加载异常的解决...
查看>>
学会分享和交流
查看>>
jQuery中的事件绑定的几种方式
查看>>
泥塑课
查看>>
iOS 自定义的对象类型的解档和归档
查看>>
setImageBitmap和setImageResource
查看>>
AndroidStudio3.0 修改项目包名
查看>>