在ASP.NET中将文本下载为文件

Vij*_*jay 7 .net c# asp.net

我试图从屏幕上下载一些文本输出作为文本文件.以下是代码.它在某些页面上工作,而在其他页面上根本不工作.任何人都可以在这里建议什么是错的?

protected void Button18_Click(object sender, EventArgs e){
    Response.Clear();
    Response.Buffer = true;
    Response.ContentType = "text/plain";
    Response.AppendHeader("content-disposition", "attachment;filename=output.txt");

    StringBuilder sb = new StringBuilder();
    string output = "Output";
    sb.Append(output);
    sb.Append("\r\n");
    Response.Write(sb.ToString());
}
Run Code Online (Sandbox Code Playgroud)

Rui*_*mba 25

正如Joshua已经提到的,您需要将文本写入输出流(Response).此外,不要忘记在此之后调用Response.End().

protected void Button18_Click(object sender, EventArgs e)
{
    StringBuilder sb = new StringBuilder();
    string output = "Output";
    sb.Append(output);
    sb.Append("\r\n");

    string text = sb.ToString();

    Response.Clear();
    Response.ClearHeaders();

    Response.AppendHeader("Content-Length", text.Length.ToString());
    Response.ContentType = "text/plain";
    Response.AppendHeader("Content-Disposition", "attachment;filename=\"output.txt\"");

    Response.Write(text);
    Response.End();
}
Run Code Online (Sandbox Code Playgroud)

编辑1:添加了更多细节

编辑2:我正在阅读其他SO帖子,用户建议在文件名周围加上引号:

Response.AppendHeader("content-disposition", "attachment;filename=\"output.txt\"");
Run Code Online (Sandbox Code Playgroud)

资料来源:https: //stackoverflow.com/a/12001019/558486

  • @RuiJarimba按钮位于UpdatePanel中,当我删除updatepanel时,它工作正常. (2认同)