0

我正在使用这部分代码使用UpdatePanel中 imageButton 的 onClick 事件下载文件,如果我将 imageButton 添加为 updatePanel 的PostBackTrigger ,它可以正常工作,是否可以在没有完整回发的情况下做到这一点

        Dim stream As IO.Stream = Nothing
        Dim bytesToRead As Integer = 10000
        Dim buffer As Byte() = New Byte(bytesToRead - 1) {}
        Try
            Dim fileReq As Net.HttpWebRequest = CType(Net.HttpWebRequest.Create(FileURL), Net.HttpWebRequest)
            Dim fileResp As Net.HttpWebResponse = CType(fileReq.GetResponse(), Net.HttpWebResponse)
            If fileReq.ContentLength > 0 Then fileResp.ContentLength = fileReq.ContentLength
            stream = fileResp.GetResponseStream()
            Dim resp = HttpContext.Current.Response
            resp.ContentType = "application/octet-stream"
            resp.AddHeader("Content-Disposition", "attachment; filename=""" & FileName & """")
            resp.AddHeader("Content-Length", fileResp.ContentLength.ToString())
            Dim length As Integer
            Do
                If resp.IsClientConnected Then
                    length = stream.Read(buffer, 0, bytesToRead)
                    resp.OutputStream.Write(buffer, 0, length)
                    resp.Flush()
                    buffer = New Byte(bytesToRead - 1) {}
                Else
                    length = -1
                End If
            Loop While length > 0
        Finally
            If stream IsNot Nothing Then
                stream.Close()
            End If
        End Try
4

1 回答 1

0

我找到了解决方案。@HATCHA 在Asp 上的回答:当从 ashx 文件下载文件时,progress 不会结束动画效果很棒。@VDWWD 说的很棒,但在我的情况下不是,因为在开始下载之前我需要一个按钮来创建 pdf文件。这意味着客户端点击将无用。

ScriptManager.RegisterClientScriptBlock(Me, GetType(Page), "downloadFileExport", "javascript:window.location ='" & ResolveUrl("~/report/download.ashx?url=" & url & "&fName=" & fName) & "';", True)
于 2017-11-29T12:57:57.583 回答