#c# #.net #http #httprequest
#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.
Заранее спасибо
Ответ №1:
Во-первых, чтобы получить все файлы, вам нужен способ их перечисления. В HTTP нет никакого метода, который позволяет загружать весь каталог или технически даже перечислять, что находится в каталоге. Некоторые веб-серверы настроены на отправку вам предопределенной веб-страницы, которая отображает список файлов в каталоге, когда в нем отсутствует страница по умолчанию, но не все. Вы могли бы проанализировать это содержимое, чтобы получить список файлов, которые вам нужно загрузить. В противном случае вам нужно будет найти способ получить эту информацию программно, на основе самого веб-приложения.
Во-вторых, насколько я помню, вы можете загрузить image
из stream
. Вместо использования WebClient
вы можете использовать HttpWebRequest
, чтобы получить доступ к потоку содержимого и передать его в свой конструктор. Тем не менее, я думаю, что для вас может быть лучше / проще использовать временный каталог и загружать файлы оттуда. Иногда при загрузке чего-либо из сетевого потока, подобного этому, могут происходить неожиданные вещи (например, поток GIF-изображений с анимациями пытаются сохранить открытым для постоянного чтения кадров анимации), что может вызывать исключения в нечетные моменты, которые вы, возможно, не готовы отлаживать и понимать с места в карьер.
Наконец, обратите внимание, что вы будете использовать mime type
здесь только для проверки того, что ваш контент является изображением, поэтому вы явно не загружали бы что-то типа mime application/octet-stream
в image
объект, а только такие вещи, как image/jpeg
, image/gif
image/png
и т.д.