asp.net - 在新窗口中写入Outputstream

标签 asp.net html webforms window filestream

如何在新的浏览器窗口中编写输出流?
目前,我有下面的代码。很明显,它在同一个窗口中打开了流。我知道我可以将Outputstream写入文件并在新窗口中打开它,但这不是一个选项。

protected void openPDF(byte[] dados) {

   HttpContext contexto = HttpContext.Current;

   contexto.Response.Clear();
   contexto.Response.AppendHeader("content-type", "application/pdf");
   contexto.Response.AppendHeader("Expires","Mon, 26 Jul 1990 05:00:00 GMT");
   contexto.Response.AppendHeader("Cache-Control","no-cache, must-revalidate");
   contexto.Response.AppendHeader("Pragma","no-cache");
   contexto.Response.Expires = -1;
   contexto.Response.AppendHeader("Content-Disposition", "inline; filename=labels.pdf");
   contexto.Response.AddHeader("content-length", dados.Length.ToString());
   contexto.Response.OutputStream.Write(dados, 0, dados.Length);
   contexto.Response.OutputStream.Flush();
   contexto.Response.End();
  }

最佳答案

请求文件的链接需要指定您想要一个新的浏览器窗口。

<a href="/path/to/file" target="_blank">PDF</a>

一旦请求被发送到服务器,服务器只需将结果放在请求它的窗口中进行响应,除非您指定了不同的目标。显然,将其更改为附件会提示下载,但您知道这一点,并希望避免下载。
其他的解决方案是编写一个响应,使用一些javascript来打开一个新窗口并执行实际的请求来获取数据。如果你知道你总是希望它出现在一个新窗口中,我认为改变链接来指定一个新窗口是一个更好的解决方案。

关于asp.net - 在新窗口中写入Outputstream,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1532039/

相关文章:

c# - 通过代码注册一个自定义的PageHandlerFactory

javascript - knockout 将值从输入发送到函数

html - 列表项悬浮样式在页面上不起作用

javascript - 将类动态添加到控件时,单击事件不起作用

c# - 尝试使用 JSON.Net 使用 SmartyStreets JSON... "Cannot deserialize JSON array into type Components"

c# - 如何防止在多个选项卡中共享用户定义的 session ?

asp.net - 带有私有(private)视频的 Web API C#

c# - 通过Web应用程序构建和控制预定的任务或服务

javascript - 在 css 中使用 angularjs 模板 {{ }}

php - CodeIgniter 表单验证不工作