0

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

问题是,这个模拟在另一个库中,文件作为字节数组返回。

现在我想在新选项卡或窗口中打开这个图像/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. 不在新窗口中打开,而是使用为该扩展分配的默认应用程序打开。

4

1 回答 1

0

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

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

于 2013-09-26T08:25:31.850 回答