网站首页
网站导航
Ctrl+D收藏
首 页
代码段
源码包
文档库
工具箱
代码语言
.
CSharp
.
JS
Java
Asp.Net
C
MSSQL
PHP
Css
PLSQL
Python
Shell
EBS
ASP
Perl
ObjC
VB.Net
VBS
MYSQL
GO
Delphi
AS
DB2
Domino
Rails
ActionScript
Scala
代码分类
文件
系统
字符串
数据库
网络相关
图形/GUI
多媒体
算法
游戏
Jquery
Extjs
Android
HTML5
菜单
网页交互
WinForm
控件
企业应用
安全与加密
脚本/批处理
开放平台
其它
【
C#
】
循环下载多个文件 (把多个文件压缩成一个文件可以一
作者:
/ 发布于
2019/9/12
/
259
循环下载多个文件 (把多个文件压缩成一个文件可以一次性下载)
using ICSharpCode.SharpZipLib.Checksum; using ICSharpCode.SharpZipLib.Zip; using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; namespace Demo { ? ? public partial class index : System.Web.UI.Page ? ? { ? ? ? ? protected void Page_Load(object sender, EventArgs e) ? ? ? ? { ? ? ? ? ? ? List<string> listFJ = new List<string>();//保存附件路径 ? ? ? ? ? ? List<string> listFJName = new List<string>();//保存附件名字 ? ? ? ? ? ? for (int i = 0; i < 2; i++) ? ? ? ? ? ? { ? ? ? ? ? ? ? ? listFJ.Add(Server.MapPath("upload/") + (i + 1) + ".txt"); ? ? ? ? ? ? ? ? listFJName.Add((i + 1) + ".txt"); ? ? ? ? ? ? } ? ? ? ? ? ? string time = DateTime.Now.Ticks.ToString(); ? ? ? ? ? ? ZipFileMain(listFJ.ToArray(), listFJName.ToArray(), Server.MapPath("upload/" + time + ".zip"), 9);//压缩文件 ? ? ? ? ? ? DownloadFile(Server.UrlEncode("附件.zip"), Server.MapPath("upload/" + 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(); ? ? ? ? ? ? } ? ? ? ? } ? ? } }
评论列表
本站所提供的代码,版权归原作者所有,若有侵犯作者版权,请与我们联系,我们将立即删除或修改。谢谢!
本站所有代码发布及提供者。
试试其它关键字
同语言下
.
C#动态修改文件夹名称(FSO实现,不移动文件)
.
c# 移动文件或文件夹
.
c#图片添加水印
.
网站后台修改图片尺寸代码
.
处理大图片在缩略图时的展示
.
实现对图片上传的接收
.
去除字符串中的空格,回车,换行符转变成‘;’在按‘
.
按照回车换行符分割字符串
.
文件MD5码 比较,检测文件是否一样
.
计算每周和每月固定日期
可能有用的
.
C#动态修改文件夹名称(FSO实现,不移动文件)
.
c# 移动文件或文件夹
.
c#图片添加水印
.
网站后台修改图片尺寸代码
.
处理大图片在缩略图时的展示
.
实现对图片上传的接收
.
去除字符串中的空格,回车,换行符转变成‘;’在按‘
.
按照回车换行符分割字符串
.
文件MD5码 比较,检测文件是否一样
.
计算每周和每月固定日期
贡献的其它代码
Label
地图
本站
我们
服务
版权
联系
回馈
博客