標籤:style class blog code http tar
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 }