zoukankan      html  css  js  c++  java
  • asp.net文件下载

     1       protected void btn_Down(object sender, EventArgs e)
     2         {
     3             string filePath = Server.MapPath("/TradeLog/" + txtDate.Text.Trim());
     4             if (!downBeforeValidation(filePath))
     5                 return;
     6             dlZipDir(filePath, txtDate.Text);
     7         }    
     8 
     9        /// <summary>
    10         /// 下载前验证
    11         /// </summary>
    12         /// <param name="filePath">文件路径</param>
    13         /// <returns></returns>
    14         private bool downBeforeValidation(string filePath)
    15         {
    16             //判断密码是否正确
    17             string downPassWord = WebConfigurationManager.AppSettings["downPassWord"];
    18             if (string.IsNullOrEmpty(txtPassWord.Text) || txtPassWord.Text.Trim() != downPassWord)
    19             {
    20                 Response.Write("<script>alert('密码错误或为空')</script>");
    21                 return false;
    22             }
    23             //判断文件是否存在
    24 
    25             if (!Directory.Exists(filePath))
    26             {
    27                 Response.Write("<script>alert('目录不存在')</script>");
    28                 return false;
    29             }
    30             return true;
    31         }
    32 
    33       /// <summary>
    34         /// 全部变量
    35         /// </summary>
    36         ZipOutputStream zos = null;
    37         String strBaseDir = "";
    38         /// <summary>
    39         /// 下载文件
    40         /// </summary>
    41         /// <param name="strPath">路径</param>
    42         /// <param name="strFileName">下载后默认显示文件名称</param>
    43         void dlZipDir(string strPath, string strFileName)
    44         {
    45             MemoryStream ms = null;
    46             Response.ContentType = "application/octet-stream";
    47             strFileName = HttpUtility.UrlEncode(strFileName).Replace('+', ' ');
    48             Response.AddHeader("Content-Disposition", "attachment;   filename=" + strFileName + ".zip");
    49             ms = new MemoryStream();
    50             zos = new ZipOutputStream(ms);
    51             strBaseDir = strPath + "\";
    52             addZipEntry(strBaseDir);
    53             zos.Finish();
    54             zos.Close();
    55             Response.Clear();
    56             Response.BinaryWrite(ms.ToArray());
    57             Response.End();
    58         }
    59 
    60      /// <summary>
    61         /// 生成压缩文件
    62         /// </summary>
    63         /// <param name="PathStr"></param>
    64         void addZipEntry(string PathStr)
    65         {
    66             DirectoryInfo di = new DirectoryInfo(PathStr);
    67             foreach (DirectoryInfo item in di.GetDirectories())
    68             {
    69                 addZipEntry(item.FullName);
    70             }
    71             foreach (FileInfo item in di.GetFiles())
    72             {
    73                 FileStream fs = File.OpenRead(item.FullName);
    74                 byte[] buffer = new byte[fs.Length];
    75                 fs.Read(buffer, 0, buffer.Length);
    76                 string strEntryName = item.FullName.Replace(strBaseDir, "");
    77                 ZipEntry entry = new ZipEntry(strEntryName);
    78                 zos.PutNextEntry(entry);
    79                 zos.Write(buffer, 0, buffer.Length);
    80                 fs.Close();
    81             }
    82         }
  • 相关阅读:
    redis之(十二)redis数据的持久化
    redis之(十一)redis实现缓存的功能
    redis之(十)redis实现消息中间件的功能
    redis之(九)redis的事务机制
    SQL关于IN和EXISTS的用法和区别的比较
    mysql explain extra理解
    mysql explain rows理解
    mysql explain中key_len值的说明
    redis常见重要性能指标数据分析和相关问题解决方案
    java.lang.UnsupportedOperationException解决方法!!!
  • 原文地址:https://www.cnblogs.com/keyyang/p/3810042.html
Copyright © 2011-2022 走看看