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 服务器上了.代码如下: <%@ ...
随机推荐
- 【转】利用MVC模式开发Java应用程序[组图]
Java是一种面向对象的语言,是实现面向对象编程的强大工具.我们在实际编程中,应该运用并发挥其最大效能.但是,要利用面向对象编程思想,自己独立开 发出好的Java应用程序,非凡是大.中型程序,并不是一 ...
- Android开发之AlarmManager详解
AlarmManager实质是一个全局的定时器,是Android中常用的一种系统级别的提示服务,在指定时间或周期性启动其它组件(包括Activity,Service,BroadcastReceiver ...
- EL表达式获取数据
EL 全名为Expression Language. EL主要作用 获取数据: •EL表达式主要用于替换JSP页面中的脚本表达式,以从各种类型的web域 中检索java对象.获取数据.(某个web域 ...
- WebService 的创建,部署和使用
WebService,即Web服务,能使得运行在不同机器上的不同应用无须借助,专门的第三方软件或硬件,就可相互交换数据或集成. 第一次选择WebService,是为了替代数据库远程连接.我们都知道当S ...
- 用java发送email邮件例子
package com.hzk.mail; import java.net.MalformedURLException; import java.net.URL; import java.text.S ...
- Integer类的装箱和拆箱到底是怎样实现的?
先解释一下装箱和拆箱: 装箱就是 自动将基本数据类型转换为包装器类型:拆箱就是 自动将包装器类型转换为基本数据类型. 下表是基本数据类型对应的包装器类型: int(4字节) Integer byt ...
- html5定位并在百度地图上显示
在开发移动端 web 或者webapp时,使用百度地图 API 的过程中,经常需要通过手机定位获取当前位置并在地图上居中显示出来,这就需要用到html5的地理定位功能. navigator.geolo ...
- Css background缩写
例子: background:url(../images20130624/bg.png) no-repeat -1424px -5px; 官方API Value: ['background-color ...
- centos6.5下的mysql5.6.30安装
1.解压mysql tar -xf mysql-5.6.30-linux-glibc2.5-x86_64.tar.gz -C /usr/local mv mysql-5.6.30-linux-gli ...
- silverlight 用户浏览器未安装SL插件问题
1.在Silverlight启动页面 <%@ Page Language="C#" AutoEventWireup="true" %> <!D ...