C# 是否可以派生(伪造)内存内存内存流文件的位置路径?

C# 是否可以派生(伪造)内存内存内存流文件的位置路径?,c#,file-io,.net-3.5,filestream,memorystream,C#,File Io,.net 3.5,Filestream,Memorystream,是否可以导出内存中文件的位置路径 我这样做的理由是,我的WinForms应用程序以Base64编码字符串格式检索一组图像。我需要建立一些HTML并注入这些图像,以便它们可以呈现在应用程序上WebBrowser控件的嵌入式页面上。因为我们在这里讨论的是HTML,所以我需要使用标记IMG不需要路径,它需要URL。不能使用URL引用内存中的数据。浏览器将使用IMG标记中提供的URL发出第二个HTTP请求,该URL此时必须有效 考虑添加MVC操作或HTTP处理程序以返回图像字节。或者将其保存到磁盘。您可

是否可以导出内存中文件的位置路径


我这样做的理由是,我的WinForms应用程序以Base64编码字符串格式检索一组图像。我需要建立一些HTML并注入这些图像,以便它们可以呈现在应用程序上WebBrowser控件的嵌入式页面上。因为我们在这里讨论的是HTML,所以我需要使用
标记
IMG
不需要路径,它需要URL。不能使用URL引用内存中的数据。浏览器将使用
IMG
标记中提供的URL发出第二个HTTP请求,该URL此时必须有效


考虑添加MVC操作或HTTP处理程序以返回图像字节。或者将其保存到磁盘。

您可以使用将一个轻量级HTTP服务器构建到应用程序中

您将希望使用异步模型。创建一个为其提供内容的url,例如“http://*:8080/appdata”,然后在html中使用该url(http://localhost:8080/appdata/someinmemoryresource"


当HttpListener接收到请求时,查看路径并使用您想要提供的任何内存数据进行响应!

如果您控制服务器上运行的应用程序(您在注释中指出),则您应该能够重定向特定资源的请求。例如,如果用户应用程序请求http://myserver/memory/imgxxx.jpg“,服务器应该能够拦截该数据,而不是试图从磁盘提供imgxxx.jpg,而是从内存中的数据构造一个映像,并将其发送到客户端

现在,如果您只是将base64编码的数据发送给客户端,并希望客户端以某种方式访问数据并进行转换……这是一个更难的问题。我可以设想使用JavaScript做一些事情,用相应的图像替换所有具有某些给定属性的img标记。但我怀疑这会变得非常混乱。我甚至有可能


另一种可能是创建派生的
WebBrowser
组件并自定义其行为。方法文档中有一个很好的例子。可以编写一个处理程序,在组件需要下载时调用。然后您可以拦截调用并提供内存映像。我不确定这是可能的。你可以看看。不过,我会说,只写文件和使用“文件://“url.

A
MemoryStream
不会假装是文件。。。许多其他流类型也没有。有些读者可能会公开一个逻辑路径。。。您能否更具体地说明查询路径的场景?如果您提到您的目标,可能会更有帮助。你为什么要这么做?可能有一个比伪造东西简单得多的答案。很可能,他正在使用第三方库,该库需要一个文件路径作为参数,但他只有内存中的文件,不想将其写入临时路径。我已经重新考虑了上面的问题,以包括我的目标。对于小图像,您可以使用
数据:
URL。可以使用本地路径位置,例如src=“c:/files/abc.jpg”。这就是我所说的路径。看起来我需要保存到磁盘:-(不,这是不可能的,因为从客户端的角度来看,此路径不是有效的URL。客户端无法访问服务器的硬盘(原因很明显)。我刚刚应用了一个快速测试,并确认使用src=”显示图像。“file:///C:/Users/XYZ/Desktop/imgtest.jpg"。注意,我正在WinForms WebBrowser应用程序中显示图像。事实上,我为您测试您的理论而鼓掌。看看web是如何构建的:这将为您提供一些很好的见解。但是服务器和客户端在同一台机器上。请记住,这是一个带有WebBrowser控件的WebForms应用程序。我在内存中有一个二进制图像ich我需要在这个浏览器上显示。当然,如果我获取这个二进制图像并将其保存在本地(比如说独立存储),那么我将能够通过在src中引用它来访问和加载图像,就像我上面描述的那样?是的,不幸的是,我的问题是后者-“将base64编码的数据发送给客户机,并希望客户机以某种方式访问数据并进行转换”以下是您第一个建议的相关帖子: