C# 在新选项卡或窗口中以Image/PDF格式打开字节[]

C# 在新选项卡或窗口中以Image/PDF格式打开字节[],c#,asp.net,web-applications,C#,Asp.net,Web Applications,我可以通过asp.net C#中的模拟从另一台服务器访问文件(如图像或pdf) 问题是,此模拟位于另一个库中,文件以字节数组的形式返回 现在我想在一个新的选项卡或窗口中打开image/pdf的这个字节数组 示例:假设我选择查看“file1.tiff”,请求将转到相应的服务器,并使用适当的凭据搜索该文件。如果找到文件(主要动机),它将把这个“file1.tiff”转换成字节数组(比如缓冲区),并返回这个文件。这由“byte[]image”接收。现在,我想在一个新的选项卡或窗口中打开这张图片来查看,

我可以通过asp.net C#中的模拟从另一台服务器访问文件(如图像或pdf)

问题是,此模拟位于另一个库中,文件以字节数组的形式返回

现在我想在一个新的选项卡或窗口中打开image/pdf的这个字节数组

示例:假设我选择查看“file1.tiff”,请求将转到相应的服务器,并使用适当的凭据搜索该文件。如果找到文件(主要动机),它将把这个“file1.tiff”转换成字节数组(比如缓冲区),并返回这个文件。这由“
byte[]image
”接收。现在,我想在一个新的选项卡或窗口中打开这张图片来查看,而不需要询问“打开保存或取消”对话框

我已经试过:

Response.Clear();
Response.ClearContent();
Response.ClearHeaders();
Response.ContentType = "image/tiff";    
Response.AddHeader("content-length", image.Length.ToString());
Response.BinaryWrite(image);
Response.Flush();Response.End();
但它有两个问题:

  • 它要求“打开保存或取消”

  • 不在新窗口中打开,但使用为该扩展指定的默认应用程序打开


  • 您可以使用
    HttpResponse.WriteFile
    方法将流直接发送到客户端。将指定的文件直接写入
    HTTP
    响应输出流


    您可以创建
    IHttpHandler
    来发送流,从而避免一些页面生命周期,提高性能。这是我两个都用过的

    。我只安装了InternetExplorer8,它对我没有任何用处。谢谢
    Response.Clear();
    Response.ClearContent();
    Response.ClearHeaders();
    Response.ContentType = "image/tiff";    
    Response.AddHeader("content-length", image.Length.ToString());
    Response.BinaryWrite(image);
    Response.Flush();Response.End();