Maison > Article > développement back-end > Réponses associées aux questions sur la façon de télécharger plusieurs fichiers en même temps sur asp.net
Cet article présente principalement en détail la fonction d'asp.net pour réaliser plusieurs téléchargements de fichiers en même temps. Il a une certaine valeur de référence. Les amis intéressés peuvent s'y référer
Les exemples de cet article sont partagés. avec vous. Le code spécifique pour télécharger plusieurs fichiers en même temps dans asp.net est pour votre référence. Le contenu spécifique est le suivant
1. Lisez d'abord les fichiers dans le dossier. en même temps
2. Sélectionnez le fichier et cliquez sur Télécharger. Vous pouvez sélectionner plusieurs fichiers en même temps.
Idée : Téléchargez en produisant un package compressé, puis effacez le package compressé, afin que les utilisateurs puissent le télécharger en une seule fois.
1. Récupérez tous les fichiers du répertoire et liez-les à la liste de cases à cocher. Le code est le suivant :
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);
2. Code :
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">压缩级别</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(); } }
3. La dll qui doit être référencée dans le système doit être téléchargée.
4. L'effet de l'opération est tel qu'indiqué sur la figure :
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!