• 4种 ASP.NET文件下载


    Description:

    4种ASP.NET文件下载

    //TransmitFile实现下载
        protectedvoid 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实现下载
        protectedvoid 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分块下载
        protectedvoid Button3_Click(object sender, EventArgs e)
        {

           string fileName = "aaa.txt";//客户端保存的文件名
           string filePath =Server.MapPath("DownLoad/aaa.txt");//路径

           System.IO.FileInfo fileInfo = newSystem.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();
           }
        }

       //流方式下载
        protectedvoid 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();

       }

  • 相关阅读:
    Windows环境下Unicode编程总结
    我的CS脚本autoexec.cfg
    完成端口与高性能服务器程序开发[引用]
    调用未知DLL中的导出函数
    兼容Vista 赛门铁克公测新杀毒软件
    I Love You的真正含义
    码根码
    木马经典十大藏身地点大搜查
    Windows调试器及不同平台符号包下载地址(收集)
    “千般路”与“磨豆腐”
  • 原文地址:https://www.cnblogs.com/liyuxin/p/2110998.html
Copyright © 2020-2023  润新知