c# - 如何从 http 图像创建 System.Drawing.Image

标签 c# .net http httprequest

我不习惯使用远程资源,所以这个问题可能很简单,但我不确定如何实现它。

我需要加载一组放置在 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 文件夹中的所有文件。

提前致谢

最佳答案

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

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

最后,请注意,您只会在此处使用 mime 类型 来验证您的内容是否为图像 - 因此您明确不会加载 mime 类型的内容 application/octet-streamimage 对象中 - 但只有 image/jpeg, image/gif, image/png

关于c# - 如何从 http 图像创建 System.Drawing.Image,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5881394/

相关文章:

c# - 如何在 aspx 页面上访问子对象的字符串?

c# - 两个左尖括号 "<<"在 C# 中是什么意思?

c# - VS 2008 中的 Web 部署项目工具

C# 泛型方法并返回在 xml 方法中创建的参数化类型的对象

.net - IIS 和 .NET 与 Mac 上的 Docker

c# - 将大型数据集从 sql server 迁移到 sqlite 的最快方法

c# - 从 .net 标准库中读取 appsettings.json

node.js - 在 node.js 中使用 request.body 或 request.params 有什么区别吗?

python - 使用 Pyramid 压缩所有 HTTP 流量

http - 如何使用缩放窗口从网站中提取 .jpg 或 .png