zoukankan      html  css  js  c++  java
  • C#下载功能代码

    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对象提供了一个新的方法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();
    
     }
    }

     使用GridView等控件导出Excel

    public void outExcel()
            {
                string name = returnName();
    
                string style = @"<style>.text{mso-number-format:\@;}</style>";
    
                Response.ClearContent();
    
                Response.Buffer = true;
                Response.Charset = "gb2312";
                Response.ContentEncoding = System.Text.Encoding.GetEncoding("GB2312");
    
                Response.AddHeader("content-disposition", "attachment; filename=" + System.Web.HttpUtility.UrlEncode(name, System.Text.Encoding.UTF8) + ".xls");
    
                Response.ContentType = "application/excel";
    
                StringWriter sw = new StringWriter();
    
                HtmlTextWriter htw = new HtmlTextWriter(sw);
    
                GridView1.RenderControl(htw);
    
                Response.Write(style);
    
                Response.Write(sw.ToString());
    
                Response.End();
            }
    
  • 相关阅读:
    打印九九乘法表
    PAT (Basic Level) Practice (中文) 1091 N-自守数 (15分)
    PAT (Basic Level) Practice (中文)1090 危险品装箱 (25分) (单身狗进阶版 使用map+ vector+数组标记)
    PAT (Basic Level) Practice (中文) 1088 三人行 (20分)
    PAT (Basic Level) Practice (中文) 1087 有多少不同的值 (20分)
    PAT (Basic Level) Practice (中文)1086 就不告诉你 (15分)
    PAT (Basic Level) Practice (中文) 1085 PAT单位排行 (25分) (map搜索+set排序+并列进行排行)
    PAT (Basic Level) Practice (中文) 1083 是否存在相等的差 (20分)
    PAT (Basic Level) Practice (中文) 1082 射击比赛 (20分)
    PAT (Basic Level) Practice (中文) 1081 检查密码 (15分)
  • 原文地址:https://www.cnblogs.com/lingyuan/p/1909761.html
Copyright © 2011-2022 走看看