有关asp.net如何实现多个文件同时下载问题相关解答
导读:收集整理的这篇文章主要介绍了有关asp.net如何实现多个文件同时下载问题相关解答,觉得挺不错的,现在分享给大家,也给大家做个参考。这篇文章主要为大家详细介绍了asp.net实现多个文件同时下载功能,具有一定的参考价值,感兴趣的小伙伴们可以...
收集整理的这篇文章主要介绍了有关asp.net如何实现多个文件同时下载问题相关解答,觉得挺不错的,现在分享给大家,也给大家做个参考。这篇文章主要为大家详细介绍了asp.net实现多个文件同时下载功能,具有一定的参考价值,感兴趣的小伙伴们可以参考一下本文实例为大家分享了asp.net多个文件同时下载的具体代码,供大家参考,具体内容如下
1、首先读取文件夹下的文件,可能同时存在多个文件
2、选中文件,然后点击下载,同时可以选择多个文件。
思路:通过生产压缩包的形式进行下载,然后再清楚压缩包,这样用户可以一次性全部下载下来。
一、获取目录下的所有文件,然后绑定到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);
二、选中文件后,点击下载按钮。代码:
PRotected void BTn_down_Click(object sender, Eventargs e) {
if (ckl_ck.Items.Count >
0) {
Liststring>
listFJ = new Liststring>
();
//保存附件路径 Liststring>
listFJName = new Liststring>
();
//保存附件名字 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">
压缩级别/param>
public void ZipFileMain(string[] filenames, string[] fileName, string name, int Level) {
ZIPOutputStream s = new ZipOutputStream(File.Create(name));
Crc32 crc = new Crc32();
//压缩级别 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);
//建立压缩实体 ZipEntry entry = new ZipEntry(fileName[m].ToString());
//原文件名 //时间 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();
}
}
三、系统中需要引用的dll 需要下载。
四、运行效果如图:
以上就是有关asp.net如何实现多个文件同时下载问题相关解答的详细内容,更多请关注其它相关文章!
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: 有关asp.net如何实现多个文件同时下载问题相关解答
本文地址: https://pptw.com/jishu/593070.html
