在新选项卡或窗口中打开字节[]作为图像/ PDF

时间:2013-09-26 08:10:51

标签: c# asp.net web-applications

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

问题是,这个模拟是在另一个库中,文件以字节数组的形式返回。

现在我想在新的标签页或窗口中打开image / pdf的这个字节数组。

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

byte[] image= impFile.ViewFile(fileName);

我已经尝试过了:

Response.Clear();
Response.ClearContent();
Response.ClearHeaders();
Response.ContentType = "image/tiff";    
Response.AddHeader("content-length", image.Length.ToString());
Response.BinaryWrite(image);
Response.Flush();Response.End();

但它有两个问题: -

  1. 要求“打开保存或取消”。

  2. 不会在新窗口中打开,但会为分配给该扩展程序的默认应用程序打开。

1 个答案:

答案 0 :(得分:0)

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

您可以创建IHttpHandler来发送流,从而避免一些页面生命周期,提高性能。这是Link