0

下载带有进度条的文件时遇到一些问题。

这就是我在 aspx 页面中的内容。

<asp:UpdatePanel ID="up1" runat="server">
    <ContentTemplate>
        <asp:TabContainer ID="Tabcontainer1" runat="server" CssClass="fancy fancy-green" align="left" ActiveTabIndex="0">
        <asp:TabPanel ID="CRRecomd_Customers" runat="server">
            <ContentTemplate>

                <asp:Button ID="btn_CPLREcomoned_Customers" runat="server" ValidationGroup="V3" CssClass="button" Text="Generate CRs To Be Recommended" Width="297px" OnClick="GetcuctomersCrs" Height="43px" />

            </ContentTemplate>
        </asp:TabPanel>
        <asp:UpdateProgress ID="UpdateProgress1" runat="server">
            <ProgressTemplate>
                <div id="Background"></div>
                <div id="Progress">
                    <img src="Images/loading.gif" style="vertical-align: middle" />
                    Fetching Records Please Wait...
                </div>
            </ProgressTemplate>
        </asp:UpdateProgress>

    </ContentTemplate>
</asp:UpdatePanel>

在后面的代码中,我编写了以下代码来下载文件

if(chk_download.Checked) {

               Response.Clear();
               Response.Buffer = true;
               Response.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";
               Response.AddHeader("Content-Disposition", "attachment;filename=" + fileName + ".xls");
               Response.Flush();
               Response.BinaryWrite(CRDataStream);
               HttpContext.Current.ApplicationInstance.CompleteRequest();
           }

这里的问题是当我单击 btn_CPLREcomoned_Customers 按钮时,进度条显示正确,但文件未下载。如果我删除显示进度条的部分,则文件下载成功。

当我点击下载按钮时,我没有收到错误,只是它显示进度条一段时间(大约 1 分钟),之后会出现相同的屏幕,没有任何错误或信息......

谁能告诉我正确的解决方案?

谢谢。

4

1 回答 1

0

我正在寻找的问题是使进度条消失,但我的代码允许下载。

我会在允许文件下载的 CompleteRequest 之前为 OutputStream 添加以下项目以正确完成。

        HttpContext.Current.Response.OutputStream.Flush()
        HttpContext.Current.Response.OutputStream.Close()

        HttpContext.Current.ApplicationInstance.CompleteRequest()

这确实允许文件在我的浏览器中下载,但不会使进度面板消失。希望这可以帮助。

于 2014-05-01T16:55:31.730 回答