在浏览器中从命名管道打开文件 - 可能与否?没有保存在磁盘上

问题描述:

我在C#上创建了命名管道。在浏览器中从命名管道打开文件 - 可能与否?没有保存在磁盘上

服务器

using (NamedPipeServerStream pipeServer = new NamedPipeServerStream("testpipe", PipeDirection.Out)) 
     { 
      Console.WriteLine("NamedPipeServerStream object created."); 
      Console.Write("Waiting for client connection..."); 
      pipeServer.WaitForConnection(); 
      Console.WriteLine("Client connected."); 
      try 
      { 
       using (BinaryWriter sw = new BinaryWriter(pipeServer)) 
       { 
        sw.AutoFlush = true; 
        Console.Write("Enter text: "); 
        byte[] bytes = File.ReadAllBytes(@"C:\\Temp\test.png"); 
        sw.Write(bytes); 
       } 
      } 
      catch (IOException e) 
      { 
       Console.WriteLine("ERROR: {0}", e.Message); 
      } 
     } 

客户

using (NamedPipeClientStream pipeClient = new NamedPipeClientStream(".", "testpipe", PipeDirection.In)) 
     { 
     Console.Write("Attempting to connect to pipe..."); 
     pipeClient.Connect(); 
     Console.WriteLine("Connected to pipe."); 
     Console.WriteLine("There are currently {0} pipe server instances open.", pipeClient.NumberOfServerInstances); 
     using (BinaryReader sr = new BinaryReader(pipeClient)) 
     { 
      byte[] list; 
      list = sr.ReadBytes(214); 
     } 
    } 
    Console.Write("Press Enter to continue..."); 
    Console.ReadLine(); 
} 

在这个管道存在的文件。如何在浏览器(IE)中打开它而不保存在磁盘上? 我知道我的文件是NT对象,但是如何打开它? (!)

+0

开箱即用的答案可能不是,但一个解决方案可能是一个自定义的命名管道URL名称的Internet Explorer http:// msdn .microsoft.com/en-us/library/jj650247(v = vs.85).aspx – rene

+0

恐怕这确实是临时文件的用途。 – Gusdor

如果你的照片足够小(〜32K base64编码)被作为参数传递,你确定与IE8或以上(或其他浏览器),你可以试试这个:

string base64String = Convert.ToBase64String(bytes); 

SHDocVw.InternetExplorer IE = new SHDocVw.InternetExplorer(); 
object Empty = 0; 
object URL = "about:blank"; 
IE.Visible = true; 
IE.Navigate2(ref URL, ref Empty, ref Empty, ref Empty, ref Empty); 
IHTMLDocument2 hTMLDocument = (mshtml.IHTMLDocument2)IE.Document; 
HTMLWindow2 iHtmlWindow2 = (HTMLWindow2) hTMLDocument.Script ; 
iHtmlWindow2.execScript("document.write(\"<img src=\\\"data:image/png;base64," + base64String + "\\\">\")", "javascript"); 

如果我想别的东西我会让你知道:)