Asp.net 同时下载多个文件
整理自网络
下载思路是首先把多个文件进行压缩,然后再下载压缩成的压缩包
引用文件dll:ICSharpCode.SharpZipLib.dll
1. 合成下载文件夹
Protected Sub btn_down_click(ByVal sender As Object, ByVal e As EventArgs) Handles btn_Down.Click
If txtBz.Text.Trim = "" Then
Page.ClientScript.RegisterClientScriptBlock(Me.[GetType](), "", "alert('请填写下载备注!');", True)
Exit Sub
End If Dim i As Integer
Dim selcount As Integer =
Dim fileList As List(Of String) = New List(Of String)()
If rptList.Items.Count > Then
For i = To rptList.Items.Count -
Dim chk As CheckBox = rptList.Items(i).FindControl("cbkItem")
If chk IsNot Nothing AndAlso chk.Checked Then
selcount +=
Dim filePath As HiddenField = rptList.Items(i).FindControl("hfUrl")
Dim fileName As HiddenField = rptList.Items(i).FindControl("hfFileName") If filePath IsNot Nothing Then
Dim root As String = Request.PhysicalApplicationPath
Dim tmpUrl = root + filePath.Value
fileList.Add(tmpUrl + "|" + fileName.Value) '最后结果为:路径|名称
End If
End If Next
End If
Dim time As String = DateTime.Now.Ticks.ToString()
Dim baseFolder As String = HttpContext.Current.Request.MapPath("~/UploadFile/TempWorkFlow/")
If Not Directory.Exists(baseFolder) Then
Directory.CreateDirectory(baseFolder)
End If
If selcount = Then
Page.ClientScript.RegisterClientScriptBlock(Me.[GetType](), "", "alert('请选择要下载的文件!');", True)
Exit Sub
Else
ZipFileMain(fileList.ToArray(), baseFolder & time & ".zip", )
'压缩文件
DownloadFile(Server.UrlEncode("附件.zip"), baseFolder & time & ".zip")
'Response.Redirect("Download.aspx?FileName=" & Server.UrlEncode("附件.zip") & "&FilePath=" & baseFolder & time & ".zip")
End If
End Sub
2. 压缩下载函数
''' <summary>
''' 压缩文件
''' </summary>
''' <param name="fileName">要压缩的所有文件(完全路径)</param>
''' <param name="name">压缩后文件路径</param>
''' <param name="Level">压缩级别</param>
Public Shared Sub ZipFileMain(filenames As String(), name As String, Level As Integer)
Dim s As New ZipOutputStream(File.Create(name))
Dim crc As New Crc32()
'压缩级别
s.SetLevel(Level)
' 0 - store only to 9 - means best compression
Try
For Each file__1 As String In filenames
'打开压缩文件
Dim fs As FileStream = File.OpenRead(file__1.Split("|"c)())
'文件地址
Dim buffer As Byte() = New Byte(fs.Length - ) {}
fs.Read(buffer, , buffer.Length) '建立压缩实体
Dim entry As New ZipEntry(file__1.Split("|"c)())
'原文件名
'时间
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, , buffer.Length)
Next
Catch
'Throw
Finally
s.Finish()
s.Close()
End Try
End Sub
3. 压缩下载函数
<table class="table table-hover table-bordered table-striped">
<thead>
<tr>
<th>
<input id="cbkAll" type="checkbox" onclick="checkAll();" />选择
</th>
<th width="20%">文件编号
</th>
<th>文件名称
</th>
<th>文件大小
</th>
<th>分类
</th>
<th>文件夹名
</th>
</tr>
</thead>
<tbody>
<asp:Repeater ID="rptList" runat="server" >
<ItemTemplate>
<tr>
<td class="style2">
<asp:CheckBox runat="server" ID="cbkItem" />
<asp:HiddenField ID="hfID" runat="server" Value='<%#Eval("FileID").ToString()%>' />
<asp:HiddenField ID="hfUrl" runat="server" Value='<%#Eval("FilePath").ToString()%>' />
<asp:HiddenField ID="hfFileName" runat="server" Value='<%#Eval("FileName").ToString()%>' />
</td>
<td>
<%#Eval("FileID").ToString()%>
</td>
<td>
<%#Eval("FileName").ToString()%>
</td>
<td align="center">
<%#Eval("FileSize").ToString()%>
</td>
<td>
<%#Eval("ChannelName").ToString()%>
</td>
<td>
<%#Eval("FolderName").ToString()%>
<%--<asp:Label ID ="FileFolderName" runat="server"></asp:Label>--%>
</td>
</tr>
</ItemTemplate>
</asp:Repeater>
</tbody>
</table>
Asp.net 同时下载多个文件的更多相关文章
- Asp.net mvc 下载文件
前言 最近有需求需要下载文件,可能是image的图片,也可能是pdf报告,也可能是微软的word或者excel文件. 这里就整理了asp.net mvc 和asp.net webapi 下载的方法 A ...
- ASP.NET批量下载文件的方法
一.实现步骤 在用户操作界面,由用户选择需要下载的文件,系统根据所选文件,在服务器上创建用于存储所选文件的临时文件夹,将所选文件拷贝至临时文件夹.然后调用 RAR程序,对临时文件夹进行压缩,然后输出到 ...
- ASP.NET批量下载文件
一.实现步骤 在用户操作界面,由用户选择需要下载的文件,系统根据所选文件,在服务器上创建用于存储所选文件的临时文件夹,将所选文件拷贝至临时文件夹.然后调用 RAR程序,对临时文件夹进行压缩,然后输出到 ...
- asp.net mvc5 下载文件方法
控制器自带的 FileContentResult 可以让我们很方便的返回文件到服务端,减少了很多步骤.用于下载文件的时候,像视频.文本.图片这种浏览器支持的文件,默认就会被浏览器打开.这时候想让它变成 ...
- Asp.Net MVC 实现将Easy-UI展示数据下载为Excel 文件
在一个项目中,需要做一个将Easy-UI界面展示数据下载为Excel文件的功能,经过一段时间努力,完成了一个小Demo.界面如下: 但按下导出Excel后,Excel文件将会下载到本地,在office ...
- ASP.NET Core应用针对静态文件请求的处理[3]: StaticFileMiddleware中间件如何处理针对文件请求
我们通过<以Web的形式发布静态文件>和<条件请求与区间请求>中的实例演示,以及上面针对条件请求和区间请求的介绍,从提供的功能和特性的角度对这个名为StaticFileMidd ...
- ASP.NET Core应用针对静态文件请求的处理[2]: 条件请求与区间请求
通过调用ApplicationBuilder的扩展方法UseStaticFiles注册的StaticFileMiddleware中间件帮助我们处理针对文件的请求.对于StaticFileMiddlew ...
- ASP.NET Core 1.1 静态文件、路由、自定义中间件、身份验证简介
概述 之前写过一篇关于<ASP.NET Core 1.0 静态文件.路由.自定义中间件.身份验证简介>的文章,主要介绍了ASP.NET Core中StaticFile.Middleware ...
- ASP.NET跨服务器上传文件的相关解决方案
第一种:通过FTP来上传文件 首先,在另外一台服务器上设置好FTP服务,并创建好允许上传的用户和密码,然后,在ASP.NET里就可以直接将文件上传到这台 FTP 服务器上了.代码如下: <%@ ...
随机推荐
- EL表达式运算符
语法:${运算表达式},EL表达式支持如下运算符 1.empty运算符:检查对象是否为null或“空”. 2.二元表达式:${user!=null?user.name : “”} . 3.[ ] 和 ...
- linux中ftp用户登录密码忘记了怎么修改
先来熟悉一下 vsftp 命令: 启动vsftp用命令: 1.service vsftpd start 重启vsftp用: www.111cn.net1.service vsftpd restart ...
- 查看EIGRP运行情况详细
配置EIGRP 在ROUTER(CONFIG)#下 router eigrp autonomous-system-number ROUTER(CONFIG-ROUTER)# network netwo ...
- php面向对象的特性:OOP的继承
1.关键字extends 2.PHP只支持单继承,不支持方法重载 /*使用protect 调用字段*/ class Computer{ //父类的字段 protected $_name="联 ...
- (转)Linux性能调优之虚拟内存篇
简单地说,虚拟内存就是硬盘中的一块区域,它用来存放内存里使用频率不高的页面文件.好处是为了提高内存的利用率 - 让使用频率高的页面文件活动在内存区域中,提高CPU对数据操作的速度.在Linux中,这个 ...
- css笔记——关于css中写上charset “utf-8”
当css文件中写上 charset "utf-8" 时需要将body和html的样式分开写 例如: html,body{margin:0;padding:0;font-family ...
- Codevs 1078 ==Poj 1258 Agri-Net
Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 53270 Accepted: 22140 Description D ...
- DropDownList另一种写法
2013-09-29 17:04:47 1.性别: <asp:DropDownList ID="DrpSex" runat ="server" Widt ...
- DB2&&oracle-培训内容
DB2 1 Data Sharing架构,高可用 2 DB2的对象主要有以下几类:database,storage group, Tablspace, indexspace, table,index ...
- C++ 嵌入汇编 获取CPU信息
#include "windows.h" #include "iostream" #include "string" using names ...