C#将文件压缩成一个文件流,供前端下载
直接上代码供大家参考。。。
前端页面就是一个下载的Button。。
<body>
<form id="form1" runat="server">
<div>
<asp:button ID="btn_down" runat="server" text="下载" onclick="btn_down_Click" />
</div>
</form>
</body>
后台代码:
protected void btn_down_Click(object sender, EventArgs e)
{
var name = Server.MapPath("huage");
//if (!Directory.Exists(name))
// throw new FileNotFoundException("")
var zipName = "test";
DownZip(name, zipName,);
}
private void DownZip(string dirname, string zipfile, int level = , string password = "")
{
MemoryStream ms = new MemoryStream();//支持存储区为内存的流
ZipOutputStream zos = new ZipOutputStream(ms);
if (password != "")
zos.Password = password; zos.SetLevel(level);
AddZipEntry(dirname, zos, dirname);
zos.Finish();
zos.Close();
Response.Clear();
Response.ContentType = "application/octet-stream";
Response.AddHeader("Content-Disposition", "attachment;filename=" + System.Web.HttpUtility.UrlDecode(zipfile,System.Text.Encoding.UTF8) + ".zip");
Response.BinaryWrite(ms.ToArray());
ms.Close();
Response.Flush();
Response.End();
}
private void AddZipEntry(string strPath, ZipOutputStream zos, string baseDirName)
{
DirectoryInfo dir = new DirectoryInfo(strPath);
foreach (FileSystemInfo item in dir.GetFileSystemInfos())
{
if ((item.Attributes & FileAttributes.Directory) == FileAttributes.Directory)
{
AddZipEntry(item.FullName, zos, baseDirName);
}
else
{
FileInfo f_item = (FileInfo)item;
using (FileStream fs = f_item.OpenRead())
{
byte[] buffer = new byte[(int)fs.Length];
fs.Read(buffer, , buffer.Length);
ZipEntry entry = new ZipEntry(f_item.FullName.Replace(baseDirName, ""));
zos.PutNextEntry(entry);
zos.Write(buffer, , buffer.Length);
}
}
}
}
压缩的代码的没看懂的话,可以参考我的文章:
C#使用ICSharpCode.SharpZipLib.dll进行文件的压缩与解压
C#将文件压缩成一个文件流,供前端下载的更多相关文章
- Java 多文件压缩成一个文件工具类
简单修改来自博客园勇闯天涯zfc的博客 一.内容 ①使用 Java 将多个文件打包压缩成一个压缩文件: ②主要使用 java.io 下的类 二.源代码:ZIPUtil .java import jav ...
- 使用 Java 将多个文件压缩成一个压缩文件
使用 Java 将多个文件压缩成一个压缩文件 一.内容 ①使用 Java 将多个文件打包压缩成一个压缩文件: ②主要使用 java.io 下的类 二.源代码:ZipMultiFile.java pac ...
- os模块、文件压缩 、匹配文件后缀名:fnmatch glob
一.os模块 os模块:是python是系统交互的模块 import os # 0平台信息的一些操作 python是夸平台的,所以内部兼容了不同的平台 1. os.name # 操作系统 nt是win ...
- Java—将文件压缩为zip文件
import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.File; import ...
- 开源作品-PHP写的JS和CSS文件压缩利器(单文件绿色版)-SuMinify_PHP_1_5
前言: 网站项目需要引用外部文件以减小加载流量,而且第一次加载外部资源文件后,其他同域名的页面如果引用相同的地址,可以利用浏览器缓存直接读取本地缓存资源文件,而不需要每个页面都下载相同的外部资源文件. ...
- windows下多个文件合并成一个文件
如果你拿到的是一堆文件,那么你想把它合并成一个文件来使用,那么按下面的步骤,轻轻松松就可以搞定. 第一步:把所有要合并的文件放到同一个文件下面 第二步:在CMD里面进入到你的文件目录 第三步:输入如下 ...
- PHP调用Linux的命令行执行文件压缩命令&&创建文件夹修改权限
一开始,我和普通青年一样,想到用PHP内置的 ZipArchive纠结的是环境上没安装zip扩展,想采用用PHP调用Linux的命令行 ,执行压缩命令,感兴趣的朋友可以了解下,希望本文对你有所帮助 前 ...
- 将二级目录下的文件合并成一个文件的Python小脚本
这个小程序的目的是将二级目录下的文件全部合并成一个文件(其实几级目录都可以,只要做少许改动) #coding:utf8 import sys, os def process(path): new_fi ...
- python实现将文件夹内所有txt文件合并成一个文件
新建一个文件夹命名为yuliao,把所有txt文件放进去就ok啦!注意路径中‘/’,windows下路径不是这样. #coding=utf-8 import os #获取目标文件夹的路径 filed ...
随机推荐
- btrfs基础
btrfs文件系统简介 btrfs文件系统:技术预览版(Centos7) Btrfs(B-tree.Butter FS.Better FS),GPL授权,Orale2007提出是想用来取代Ext文 ...
- Eclipse调试DEBUG时快速查看某个变量的值的快捷键
ctrl+shift+i
- vue 微信授权解决方案
背景 前后端分离项目 - SpringSocial 绑定与解绑社交账号如微信.QQ2018-08-14更新时隔四个月第一次更新,因为项目重构有一次接触到了微信授权,思路已经比原来清晰的多了,将重新修改 ...
- vue+better-scroll 下拉刷新,上拉加载更多
better-scroll 来做下拉刷新和 上拉加载 特别方便. 安装好vue脚手架和better-scroll 之后 直接复制粘贴就可以看到效果了 <template> <div ...
- LINUX 查看硬件配置命令
系统 # uname -a # 查看内核/操作系统/CPU信息 # head -n 1 /etc/issue # 查看操作系统版本 # cat /proc/cpuinfo # 查看CPU信息 # ...
- prime算法邻接表写法
#include <iostream> #include <queue> using namespace std; typedef struct { long v; long ...
- 【ACM】poj_1579_Function Run Fun_201308121654
Function Run FunTime Limit: 1000MS Memory Limit: 10000K Total Submissions: 14940 Accepted: 7736 De ...
- N天学习一个linux命令之ssh
用途 通过加密连接,远程登录主机和在远程主机执行命令,也可以用于转发x11和tcp,也可用于搭建VPN.第一次连接时,会弹出远程主机公钥指纹确认信息,通过这个方式防止中间人攻击. 用法 ssh [op ...
- C++成员函数实现在类定义中与在类定义外的区别(Windows下直接使用g++)
c++ 类的成员函数放在类的外面来实现的写法,探究一下. 原文: http://www.cnblogs.com/findumars/p/6143375.html ------------------- ...
- UVA10254 - The Priest Mathematician(找规律)
UVA10254 - The Priest Mathematician(找规律) 题目链接 题目大意:4根柱子的汉诺塔. 解题思路:题目里面有提示,先借助四个柱子移走k个,然后在借助三个柱子移走剩余的 ...