강의실/C#

[C#] WebClient를 이용하여 웹다운로드 기능 구현

파아란기쁨 2020. 12. 16. 12:33
목표

webClient 사용법을 확인하여 웹서버에서 파일 다운로드 기능을 익히자.

 

 

컴포넌트 설치

 

1. 도구 - 도구상자 항목선택 - NET Framework 구성요소 - WebClient 선택 하여 체크 후 적용

 

 

 

컴포넌트 설명

WebClient : 웹서버에서 데이터를 가져 오거나 웹서버로 데이터르 보내기 위한 컴포넌트

- Download 기능 : 데이터 다운로드

- Upload 기능 : 데이터 업로드

- OpenRead 기능 : 데이터 스트림으로 읽기

- OpenWrite 기능  : 데이터 스트림으로 쓰기

 

FolderBrowserDialog : 폴더위치 선택 컴포넌트

 

 

 

폼구성

1. label 2개, textBox 2개, Button 2개, ProgressBar 한개를 추가하여 위와 같이 폼 구성

2. FolderBrowserDialog컴포넌트 추가

 

 

 

소스코드

1. webClient1 생성 : 컴포넌트에서 추가하니 에러 발생, 동적으로 생성해서 사용하자.

        WebClient webClient1;
        public Form1()
        {
            InitializeComponent();
            webClient1 = new WebClient();
            webClient1.DownloadFileCompleted += new AsyncCompletedEventHandler(webClient1_DownloadFileCompleted);
            webClient1.DownloadProgressChanged += new DownloadProgressChangedEventHandler(webClient1_DownloadProgressChanged);
        }

 

2. 폴더 버튼 클릭 이벤트 : 다운로드 폴더를 선택하여 다운로드 위치 셋팅

 

            if (this.folderBrowserDialog1.ShowDialog() == DialogResult.OK)
            {
                this.btnDown.Enabled = true;
                txt_filePath.Text = this.folderBrowserDialog1.SelectedPath;
            }

 

 

3. 다운로드 버튼 클릭 이벤트 : 주소에 접속하여 webclient 를 이용하여 파일 다운로드

 

            btnDown.Enabled = false; // 다운로드 되는 동안 버튼 잠그자.
            try
            {
                var strFileName = this.txtUrl.Text.Split(new Char[] { '/' }); ///다운로드 받는 파일명을 찾자
                System.Array.Reverse(strFileName);
                Uri uri = new Uri(this.txtUrl.Text);
                var str = webClient1.DownloadString(uri); //파일의 유효성 검사를 위한 코드
                webClient1.DownloadFileAsync(uri, txt_filePath.Text + @"\" + strFileName[0]);
                ///DownloadFileAsync : 비동기 파일 다운로드
                ///DownloadFile : 동기 파일 다운로드
            }
            catch
            {
                this.btnDown.Enabled = false;
                MessageBox.Show("다운로드가 실패 하였습니다.", "에러",
                    MessageBoxButtons.OK, MessageBoxIcon.Error);
            }

 

4. webClient DownloadProgressChanged 이벤트 : 다운로드 되는 동안 프로그래스바에 상태 변경 표현

this.pgbDownload.Value = e.ProgressPercentage;

5. webClient DownloadFileCompleted 이벤트 : 다운로드 완료 이벤트

            btnDown.Enabled = true; //다운로드 버튼 활성화
            if (e.Error == null)
            {
                MessageBox.Show("다운로드가 완료되었습니다.", "알림", MessageBoxButtons.OK, MessageBoxIcon.Information);

            }
            else
                MessageBox.Show("다운로드가 실패 하였습니다.: " + e.Error.Message.ToString());

 

WebDownLoader.zip
0.04MB

 

 

 

활용

프로그램 업그레이드와 같이 버젼이 업데이트 되는 경우 webserver에 신규 프로그램을 올려 놓고 다시 다운로드 하여 적용시키는 경우 유용하게 사용가능

사업자 정보 표시
원당컴퓨터학원 | 기희경 | 인천 서구 당하동 1028-2 장원프라자 502호 | 사업자 등록번호 : 301-96-83080 | TEL : 032-565-5497 | Mail : icon001@naver.com | 사이버몰의 이용약관 바로가기