목표 |
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());
활용 |
프로그램 업그레이드와 같이 버젼이 업데이트 되는 경우 webserver에 신규 프로그램을 올려 놓고 다시 다운로드 하여 적용시키는 경우 유용하게 사용가능
'강의자료 > C#' 카테고리의 다른 글
[C#] FileSystemWatcher를 이용한 파일 모니터 구현 (0) | 2020.12.31 |
---|---|
[C#] PerformanceCounter 를 활용하여 작업관리자 구현 (0) | 2020.12.16 |
[C#] WebBrowser를 이용해서 간단한 웹브라우저를 만들어 보자 (0) | 2020.12.16 |
[C#] 간단한 메모장 만들기 (0) | 2020.12.12 |
[C#] 트레이 아이콘을 사용하여 프로그램을 숨겨보자 (0) | 2020.12.11 |