使用response.write打开byte [] pdf文件(服务器端操作不起作用

时间:2013-12-19 09:51:41

标签: c# asp.net response

我正在使用以下代码打开pdf byte []文件而不保存它。它工作正常但在此操作之后没有其他服务器端操作(如按钮单击)不起作用。回发无效。

    byte[] bytfile = Objects.GetFile(Convert.ToInt32(txtslno.Text.Trim()));
    Response.Clear();
    Response.ClearContent();
    Response.ClearHeaders();
    Response.ContentType = "application/pdf";
    Response.AddHeader("Content-Disposition", "attachment;filename="+filename);
    Response.AddHeader("Content-Length", bytfile.Length.ToString());
    Response.OutputStream.Write(bytfile, 0, bytfile.Length);
    Response.Flush();
    Response.End();

2 个答案:

答案 0 :(得分:4)

试试这个。它应该工作。

byte[] bytfile = Objects.GetFile(Convert.ToInt32(txtslno.Text.Trim()));
Response.Clear();
MemoryStream ms = new MemoryStream(bytfile);
Response.ContentType = "application/pdf";
Response.AddHeader("content-disposition", "attachment;filename=test.pdf");
Response.Buffer = true;
ms.WriteTo(Response.OutputStream);
Response.End();

其他尝试

Response.BinaryWrite(bytfile);

而不是

ms.WriteTo(Response.OutputStream);

在上面的代码中。

答案 1 :(得分:0)

  

它工作正常但在此操作之后没有其他服务器端操作   像按钮点击不起作用。

您是在页面或控件中使用代码吗?

为您的目的使用通用处理程序(* .ashx)。下载pdf的代码不再会给应用程序带来麻烦。

https://stackoverflow.com/a/12340735/225808可能有用作参考。