我不习惯使用远程资源,所以也许这个问题很简单,但我不确定如何实现它。
我需要加载放在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文件夹中的所有文件。
提前致谢
答案 0 :(得分:3)
首先,要获取所有文件,您需要一种枚举它们的方法。 HTTP没有任何方法可以让你下载整个目录,或者技术上甚至可以列出目录中的内容。某些Web服务器设置为向您发送预定义的Web页面,该页面在缺少默认页面时显示目录中的文件列表,但不是全部。您可以解析该内容以获取需要下载的文件列表。否则,您需要找到一种基于Web应用程序本身以编程方式获取该信息的方法。
其次,我记得你可以从image
加载stream
。您可以使用WebClient
代替HttpWebRequest
,以便访问内容流,并将其提供给构造函数。但是,我认为使用临时目录并从那里加载文件可能更好/更容易。有时在从这样的网络流中加载东西时会发生意想不到的事情(例如,试图保持打开带有动画的GIF图像流以持续读取动画的帧),这可能会导致奇怪的异常。不准备调试和了解蝙蝠。
最后,请注意,您只能在此处使用mime type
来验证您的内容是否为图片 - 因此您明确地不加载mime类型为application/octet-stream
的内容进入image
对象 - 但只包含image/jpeg
,image/gif
,image/png
等内容。