【问题标题】:How to create a System.Drawing.Image from a http image如何从 http 图像创建 System.Drawing.Image
【发布时间】:2011-05-04 09:34:46
【问题描述】:

我不习惯使用远程资源,所以也许这个问题是微不足道的,但我不确定如何实现它。

我需要加载一组放在 http 文件夹中的图像,例如 http://www.myexsamplesite.com/images

在这个目录中,我可以有 N 个不同名称的图像。

我需要在 WinForms 应用程序中(在 ListView 中)显示这些图像。

我正在研究的替代方法是将图像下载到 tmp 目录,然后从我的 WinForms 应用程序从磁盘加载它们。我正在使用以下内容:

WebClient fileReader = new WebClient();
 fileReader.DownloadFile(imageAddress, filePath);

将文件下载到磁盘。我的问题是:

如何下​​载http文件夹中的所有文件?我猜我需要枚举文件夹中的文件,然后一对一下载。

第二个问题也是最重要的。我确信有更好的机制来执行这项任务。所以:

还有其他方法可以将http图片内容放入System.Drawing.Image吗?

记住我需要获取http文件夹中的所有文件。

提前致谢

【问题讨论】:

    标签: c# .net http httprequest


    【解决方案1】:

    首先,要获取所有文件,您需要一种枚举它们的方法。 HTTP 没有任何方法可以让您下载整个目录,或者在技术上甚至列出目录中的内容。一些 Web 服务器设置为向您发送一个预定义的网页,该网页在缺少默认页面时显示目录中的文件列表,但并非全部都是。您可以解析该内容以获取您需要下载的文件的列表。否则,您需要找到一种方法,以基于 Web 应用程序本身以编程方式获取该信息。

    第二,我记得你可以从stream 加载image。您可以使用HttpWebRequest 而不是使用WebClient,这样您就可以访问内容流,并将其提供给您的构造函数。但是,我认为使用临时目录并从那里加载文件可能会更好/更容易。有时,从这样的网络流加载内容时可能会发生意想不到的事情(例如,尝试保持打开带有动画的 GIF 图像流以不断读取动画的帧),这可能会在奇怪的时间导致异常,您可能不准备调试和理解。

    最后,请注意,您将仅在此处使用 mime type 来验证您的内容是否为图像 - 因此您明确不会将 mime 类型 application/octet-stream 的内容加载到 @987654327 @object - 但仅限于 image/jpegimage/gifimage/png 等。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-11-16
      • 1970-01-01
      • 2012-08-01
      • 2021-09-07
      • 1970-01-01
      • 2016-08-09
      • 2010-12-11
      • 1970-01-01
      相关资源
      最近更新 更多