我可以通过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();
但它有两个问题: -
要求“打开保存或取消”。
不会在新窗口中打开,但会为分配给该扩展程序的默认应用程序打开。
答案 0 :(得分:0)
您可以使用HttpResponse.WriteFile
方法直接将流发送到客户端。将指定文件直接写入HTTP
响应输出流。
您可以创建IHttpHandler
来发送流,从而避免一些页面生命周期,提高性能。这是Link