5

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

我这样做的理由是基于我的 WinForms 应用程序以 Base64 编码字符串格式检索的图像集合。我需要构建一些 HTML 并注入这些图像,以便它们可以在我的应用程序的 WebBrowser 控件中的嵌入页面上呈现。由于我们在这里讨论的是 HTML,所以我需要使用<IMG>标签来显示图像。这个元素需要接受一个“src”路径,这意味着我需要确定一种方法来导出每个内存图像的绝对/相对路径。

4

3 回答 3

2

如果您控制在服务器上运行的应用程序(您在评论中指出),那么您应该能够重定向对特定资源的请求。例如,如果用户应用程序请求“http://myserver/memory/imgxxx.jpg”,服务器应该能够拦截该请求,而不是尝试从磁盘提供 imgxxx.jpg,而是从内存,并将其发送给客户端。

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

另一种可能性是创建派生WebBrowser组件并自定义其行为。CreateSink方法文档中有一个很好的例子。可以编写一个处理程序,当组件想要下载某些东西时调用该处理程序。然后,您可以拦截呼叫并提供您的内存图像。我不确定这是否可能。您可以查看WebBrowser 定制。不过,我会说,只编写文件并使用“file://”url 可能更容易。

于 2013-01-15T14:28:07.490 回答
1

您可以使用HttpListener class.

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

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

于 2013-01-15T14:09:51.147 回答
0

IMG标签不需要路径,它需要一个 URL 。您不能使用 URL 引用内存中的数据。浏览器将使用标签中提供的 URL 发出第二个 HTTP 请求,此时IMG该 URL 必须有效。

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

于 2013-01-15T13:41:06.957 回答