Как создать System.Drawing.Image из образа http - PullRequest
1 голос
/ 04 мая 2011

Я не привык работать с удаленными ресурсами, поэтому, возможно, этот вопрос тривиален, но я не уверен, как это реализовать.

Мне нужно загрузить коллекцию изображений, которые помещены в папку 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.

Заранее спасибо

1 Ответ

3 голосов
/ 04 мая 2011

Во-первых, чтобы получить все файлы, вам нужен способ их перечисления.HTTP не имеет какого-либо метода, который позволял бы вам загружать весь каталог или технически даже перечислять, что находится в каталоге.Некоторые веб-серверы настроены на отправку вам предварительно определенной веб-страницы, которая отображает список файлов в каталоге, когда отсутствует страница по умолчанию, но не все.Вы можете проанализировать этот контент, чтобы получить список файлов, которые вам нужно скачать.В противном случае вам нужно будет найти способ получить эту информацию программно, основываясь на самом веб-приложении.

Во-вторых, вы можете загрузить image из stream, насколько я помню.Вместо использования WebClient вы можете использовать HttpWebRequest, чтобы получить доступ к потоку контента и передать его в свой конструктор.Тем не менее, я думаю, что вам может быть лучше / проще использовать временный каталог и загружать файлы оттуда.Иногда могут происходить непредвиденные ситуации при загрузке таких вещей из сетевого потока (например, попытка держать поток изображений GIF с анимацией открытым для постоянного чтения кадров анимации), что может вызывать исключения в нечетные моменты времени, которые вы могли быне будьте готовы к отладке и пониманию с самого начала.

Наконец, обратите внимание, что вы будете использовать mime type здесь только для проверки того, что ваш контент является изображением - так что вы явно не загрузить что-то типа mime application/octet-stream в объект image - но только такие вещи, как image/jpeg, image/gif, image/png и т. д.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...