2011-05-04 2 views
1

원격 리소스를 사용하는 데 익숙하지 않아서이 질문은 간단하지만 구현 방법을 잘 모르겠습니다.http 이미지에서 System.Drawing.Image를 만드는 방법

http 폴더에있는 이미지 모음을로드해야합니다 (예 : http://www.myexsamplesite.com/images).

이 디렉토리 안에 다른 이름으로 N 개의 이미지가있을 수 있습니다.

이러한 이미지를 WinForms 응용 프로그램 (ListView)에 표시해야합니다.

내가 공부하고있는 대안은 이미지를 tmp 디렉토리에 다운로드 한 다음 내 WinForms 응용 프로그램에서 디스크에서로드하는 것입니다. 나는 다음을 사용하고있다 :

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

디스크로 파일을 다운로드한다. 내 질문 :

모두를의 http 폴더에있는 파일들을 다운로드 할 수 있습니까? 폴더에있는 파일을 열거하고 하나씩 다운로드해야한다고 생각합니다.

두 번째 질문과 가장 중요한. 이 작업을 수행하는 훨씬 더 좋은 메커니즘이 있다고 확신합니다. 따라서 :

System.Drawing.Image에 http 이미지 콘텐츠를 가져 오는 다른 방법이 있습니까?

http 폴더의 모든 파일을 가져와야한다는 것을 기억하십시오. 사전

답변

3

최초의

감사합니다, 모든 파일을 얻을, 당신은 그것들을 열거 할 수있는 방법이 필요하다. HTTP에는 전체 디렉토리를 다운로드하거나 기술적으로 디렉토리에있는 것을 나열 할 수있는 메소드가 없습니다. 일부 웹 서버는 기본 페이지가 없지만 모두가 아닌 디렉토리의 파일 목록을 표시하는 미리 정의 된 웹 페이지를 보내도록 설정됩니다. 해당 내용을 구문 분석하여 다운로드해야하는 파일 목록을 가져올 수 있습니다. 그렇지 않으면 웹 응용 프로그램 자체를 기반으로 프로그래밍 방식으로 해당 정보를 가져 오는 방법을 찾아야합니다.

두 번째로 stream에서 image을 불러올 수 있습니다. WebClient을 사용하는 대신 HttpWebRequest을 사용하여 콘텐츠 스트림에 액세스하여 생성자에 제공 할 수 있습니다. 그러나 임시 디렉터리를 사용하고 거기에서 파일을로드하는 것이 더 좋거나/더 쉬울 수도 있습니다. 때때로 네트워크 스트림에서 물건을로드 할 때 예기치 않은 일이 발생할 수 있습니다 (예 : 애니메이션이 포함 된 GIF 이미지의 스트림을 계속 열어 애니메이션 프레임을 계속 읽으려고 시도). 이로 인해 예외적 인 경우가 발생할 수 있습니다 디버그하고 박쥐를 이해할 준비가되어 있지 않아야합니다.

마지막으로, 당신은 단지 콘텐츠를 이미지 있는지 확인하려면 여기를 mime type을 사용하는 것입니다주의 - 그래서 명시 적으로 것 하지 부하 image 객체로 MIME 타입 application/octet-stream 뭔가 -하지만 것 같은 image/jpeg, image/gif , image/png

관련 문제