下载文件无法使用更新进度

时间:2014-04-17 05:34:42

标签: asp.net updateprogress

使用进度条下载文件时遇到问题。

这就是我在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分钟),之后会显示相同的屏幕而没有任何错误或信息......

有谁可以告诉我这个问题的正确解决方案?

感谢。

1 个答案:

答案 0 :(得分:0)

我正在搜索的问题是让进度条消失,但我的代码允许下载。

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

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

        HttpContext.Current.ApplicationInstance.CompleteRequest()

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