zoukankan      html  css  js  c++  java
  • 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 = 0
            Dim fileList As List(Of String) = New List(Of String)()
            If rptList.Items.Count > 0 Then
                For i = 0 To rptList.Items.Count - 1
                    Dim chk As CheckBox = rptList.Items(i).FindControl("cbkItem")
                    If chk IsNot Nothing AndAlso chk.Checked Then
                        selcount += 1
                        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 = 0 Then
                Page.ClientScript.RegisterClientScriptBlock(Me.[GetType](), "", "alert('请选择要下载的文件!');", True)
                Exit Sub
            Else
                ZipFileMain(fileList.ToArray(), baseFolder & time & ".zip", 9)
                '压缩文件
                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)(0))
                    '文件地址
                    Dim buffer As Byte() = New Byte(fs.Length - 1) {}
                    fs.Read(buffer, 0, buffer.Length)
    
                    '建立压缩实体
                    Dim entry As New ZipEntry(file__1.Split("|"c)(1))
                    '原文件名
                    '时间
                    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)
                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>
  • 相关阅读:
    leetcode5 Longest Palindromic Substring
    leetcode17 Letter Combinations of a Phone Number
    leetcode13 Roman to Integer
    leetcode14 Longest Common Prefix
    leetcode20 Valid Parentheses
    leetcode392 Is Subsequence
    leetcode121 Best Time to Buy and Sell Stock
    leetcode198 House Robber
    leetcode746 Min Cost Climbing Stairs
    tomcat下使用druid配置jnid数据源
  • 原文地址:https://www.cnblogs.com/ustcyc/p/3533241.html
Copyright © 2011-2022 走看看