【问题标题】:AppendHeader then RefreshAppendHeader 然后刷新
【发布时间】:2015-07-31 15:43:49
【问题描述】:

我有这个功能可以正常工作。调用时 - 它会在我的浏览器的下载文件夹中创建一个文件:

private void gvLots_Export(string fileName)
{
    Response.Clear();

    Response.AppendHeader("content-disposition", "attachment; filename=" + fileName );
    Response.ContentType = "text/plain";


    Response.Write(fichierExport.Contenu);
    Response.End();

}

但是现在,我需要在该文件正确添加到下载文件夹后刷新页面。我试过这个:

    Response.AppendHeader("content-disposition", "attachment; filename=" + fileName );
    Response.ContentType = "text/plain";

    Response.Write(fichierExport.Contenu);
    Response.End();
    Response.Redirect(Request.RawUrl);

但是,由于明显的原因,它不起作用:标头已发送,您无法在 Response.End() 之后重定向。

我尝试将一个变量添加到可以由 Resquest["stop"] 检索的标头中(如下所示):

Response.AppendHeader("content-disposition", "?stop=true&" + "attachment; filename=" + fichierExport.NomFichier );

但这些结果更糟。它不会刷新页面或下载任何内容,但它会显示我试图下载到浏览器中的文件的内容......甚至可以下载一些东西并在相同的功能中刷新页面......没有必须要求客户按下 2 个不同的按钮?

【问题讨论】:

  • 我注意到的第一件事是你的标题看起来像content-disposition: ?stop=trueattachment; filename=somefile.ext

标签: c# html asp.net


【解决方案1】:

由于我还不能发表评论,所以我会在这里发布。

请看:Refresh Page C# ASP.NET。您是否尝试过按照链接中描述的方式进行操作?例如:

Response.Redirect(Request.Url.ToString(), true);

here 所述,RawUrl 仅包含域信息之后的 URL 部分,Url 包含所有内容。

【讨论】:

  • 感谢您的努力 Cory,但这是卷轴问题,如果我在 response.End() 之前写下您的行,我的标题将被完全忽略并且没有文件被下载,如果我在之后写它response.End(),它引发了一个异常并关闭了程序...给了你积分,所以你可以发表评论,奇怪的是没有足够的声誉来评论,但足以回答
【解决方案2】:

我认为我所要求的无法完成...我在任何互联网页面上都没有看到类似我正在尝试做的事情。我会再做一个超链接来刷新页面,我会要求所有客户下载后点击它...

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-07-18
    • 1970-01-01
    • 2020-02-21
    • 2013-09-12
    • 2021-03-31
    • 2015-06-14
    • 2014-12-15
    • 1970-01-01
    相关资源
    最近更新 更多