zoukankan      html  css  js  c++  java
  • 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();

       }

  • 相关阅读:
    使用jquery.validate.js实现boostrap3的校验和验证
    MySQL 随机取数据效率问题
    qq在线客服代码
    使用Shell脚本查找程序对应的进程ID,并杀死进程
    Redis-概述
    JVM的类加载机制
    volatile
    java内存相关
    设计模式--模板方法
    设计模式概述
  • 原文地址:https://www.cnblogs.com/liyuxin/p/2110998.html
Copyright © 2011-2022 走看看