有关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