首页后端开发ASP.NET有关asp.net如何实现多个文件同时下载问题相关解答

有关asp.net如何实现多个文件同时下载问题相关解答

时间2024-01-30 21:38:03发布访客分类ASP.NET浏览292
导读:收集整理的这篇文章主要介绍了有关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多个

若转载请注明出处: 有关asp.net如何实现多个文件同时下载问题相关解答
本文地址: https://pptw.com/jishu/593070.html
从零讲解.Net Core开发实现图片文件上传下载 localStorge开发实现登录记住密码与自动登录实例

游客 回复需填写必要信息