asp.net實(shí)現(xiàn)多個(gè)文件同時(shí)下載功能
本文實(shí)例為大家分享了asp.net多個(gè)文件同時(shí)下載的具體代碼,供大家參考,具體內(nèi)容如下
1、首先讀取文件夾下的文件,可能同時(shí)存在多個(gè)文件
2、選中文件,然后點(diǎn)擊下載,同時(shí)可以選擇多個(gè)文件。
思路:通過(guò)生產(chǎn)壓縮包的形式進(jìn)行下載,然后再清楚壓縮包,這樣用戶可以一次性全部下載下來(lái)。
一、獲取目錄下的所有文件,然后綁定到checkboxlist中 ,代碼如下:
ckl_ck.Items.Clear();
DirectoryInfo TheFolder = new DirectoryInfo(Server.MapPath("Resource/Help"));
//遍歷文件夾下的文件
foreach (FileInfo NextFile in TheFolder.GetFiles())
this.ckl_ck.Items.Add(NextFile.Name);
二、選中文件后,點(diǎn)擊下載按鈕。代碼:
protected void Btn_down_Click(object sender, EventArgs e)
{
if (ckl_ck.Items.Count > 0)
{
List<string> listFJ = new List<string>();//保存附件路徑
List<string> listFJName = new List<string>();//保存附件名字
for (int i = 0; i < ckl_ck.Items.Count; i++)
{
if (ckl_ck.Items[i].Selected)
{
listFJ.Add(Server.MapPath("Resource/Help/") + ckl_ck.Items[i].Text);
listFJName.Add(ckl_ck.Items[i].Text);
}
}
string time = DateTime.Now.Ticks.ToString();
ZipFileMain(listFJ.ToArray(), listFJName.ToArray(), Server.MapPath("Resource/Help/" + time + ".zip"), 9);//壓縮文件
DownloadFile(Server.UrlEncode("附件.zip"), Server.MapPath("Resource/Help/" + time + ".zip"));//下載文件
}
}
private void DownloadFile(string fileName, string filePath)
{
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();
File.Delete(filePath);//刪除已下載文件
Response.End();
}
/// <summary>
/// 壓縮文件
/// </summary>
/// <param name="fileName">要壓縮的所有文件(完全路徑)</param>
/// <param name="fileName">文件名稱</param>
/// <param name="name">壓縮后文件路徑</param>
/// <param name="Level">壓縮級(jí)別</param>
public void ZipFileMain(string[] filenames, string[] fileName, string name, int Level)
{
ZipOutputStream s = new ZipOutputStream(File.Create(name));
Crc32 crc = new Crc32();
//壓縮級(jí)別
s.SetLevel(Level); // 0 - store only to 9 - means best compression
try
{
int m = 0;
foreach (string file in filenames)
{
//打開壓縮文件
FileStream fs = File.OpenRead(file);//文件地址
byte[] buffer = new byte[fs.Length];
fs.Read(buffer, 0, buffer.Length);
//建立壓縮實(shí)體
ZipEntry entry = new ZipEntry(fileName[m].ToString());//原文件名
//時(shí)間
entry.DateTime = DateTime.Now;
//空間大小
entry.Size = fs.Length;
fs.Close();
crc.Reset();
crc.Update(buffer);
entry.Crc = crc.Value;
s.PutNextEntry(entry);
s.Write(buffer, 0, buffer.Length);
m++;
}
}
catch
{
throw;
}
finally
{
s.Finish();
s.Close();
}
}
三、系統(tǒng)中需要引用的dll 需要下載。
四、運(yùn)行效果如圖:

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- Asp.net實(shí)現(xiàn)MVC處理文件的上傳下載功能實(shí)例教程
- ASP.NET Core實(shí)現(xiàn)文件上傳和下載
- ASP.NET?Core實(shí)現(xiàn)動(dòng)態(tài)獲取文件并下載
- ASP.NET實(shí)現(xiàn)從服務(wù)器下載文件問(wèn)題處理
- asp.net實(shí)現(xiàn)服務(wù)器文件下載到本地的方法
- ASP.Net下載大文件的實(shí)現(xiàn)方法
- ASP.NET 在下載文件時(shí)對(duì)其重命名的思路及實(shí)現(xiàn)方法
- asp.net中文件下載功能的實(shí)例代碼
- 在ASP.NET中下載文件的實(shí)現(xiàn)代碼
- asp.net 文件下載實(shí)現(xiàn)代碼
- ASP.NET MVC實(shí)現(xiàn)文件下載
相關(guān)文章
asp.net網(wǎng)站防惡意刷新的Cookies與Session解決方法
這篇文章主要介紹了asp.net網(wǎng)站防惡意刷新的Cookies與Session解決方法,分別以實(shí)例的形式講述了采用cookie法與session法實(shí)現(xiàn)WEB頁(yè)面防止惡意刷新的技巧,需要的朋友可以參考下2014-09-09
asp.net實(shí)現(xiàn)生成縮略圖及給原始圖加水印的方法示例
這篇文章主要介紹了asp.net實(shí)現(xiàn)生成縮略圖及給原始圖加水印的方法,結(jié)合具體實(shí)例形式分析了asp.net圖片的縮略圖與水印操作相關(guān)實(shí)現(xiàn)技巧,需要的朋友可以參考下2017-10-10
網(wǎng)頁(yè)(aspx)與用戶控件(ascx)交互邏輯處理實(shí)現(xiàn)
為了以后好維護(hù),把幾個(gè)頁(yè)面(ASPX)相同的部分抽取放在一個(gè)用戶控件(ASCX)上,現(xiàn)在把邏輯分享下,感興趣的各位可以參考下哈2013-03-03
ASP.NET中上傳并讀取Excel文件數(shù)據(jù)示例
如何打開Excel數(shù)據(jù)庫(kù)文件,想必有很多朋友都不清楚吧,下面通過(guò)一個(gè)簡(jiǎn)單的例子,實(shí)現(xiàn)讀取Excel數(shù)據(jù)文件2014-05-05
DAM 簡(jiǎn)單跨數(shù)據(jù)庫(kù)ADO.NET組件
這是一個(gè)可以實(shí)現(xiàn)簡(jiǎn)單跨數(shù)據(jù)庫(kù)基于ADO.NET的組件。您可以在DAL層透過(guò)它來(lái)訪問(wèn)數(shù)據(jù)庫(kù)。這是一個(gè)以前寫過(guò)一個(gè)小組件的修改版.2011-01-01
.NET 日志系統(tǒng)設(shè)計(jì)思路及實(shí)現(xiàn)代碼
這篇文章主要介紹了.NET 日志系統(tǒng)設(shè)計(jì)思路及實(shí)現(xiàn)代碼,有需要的朋友可以參考一下2013-12-12
asp.net+jquery ajax無(wú)刷新登錄的實(shí)現(xiàn)方法
asp.net+jquery ajax無(wú)刷新登錄的實(shí)現(xiàn)方法,需要的朋友可以參考一下2013-06-06

