2012-09-27 5 views
0

다음 코드를 사용하여 C# Windows 응용 프로그램의 특정 URL에서 파일을 다운로드합니다. web.DownloadFile(new Uri(url), @"F:\a");파일을 다운로드하십시오.

그것은 말한다 :

예외가 웹 클라이언트 요청 중에 발생

private void button1_Click(object sender, EventArgs e) 
{ 
    string url = @"DOWNLOADLINK"; 
    WebClient web = new WebClient(); 
    web.DownloadFileCompleted += new AsyncCompletedEventHandler(web_DownloadFileCompleted); 
    web.DownloadFile(new Uri(url), @"F:\a"); 
} 

void web_DownloadFileCompleted(object sender, AsyncCompletedEventArgs e) 
{ 
    MessageBox.Show("The file has been downloaded"); 
} 

는하지만이 라인에 오류가 있습니다.

+1

"F : \ a"폴더에 대한 액세스 권한이 있습니까? 또한 파일을 지정해야합니다. "F : \ a.txt"와 같아야합니다. –

+0

다음과 같이 if 문을 사용하여 검사해야합니다. if (File.Exists (filename)) {web.DownloadFile. ...} else {MesagesBox.Show (...); } –

+0

@BenjaminDangerJohnson 감사합니다. 그것은 효과가 있었다. 그러나 그것은 파일이 다운로드되었음을 말해주지 않았습니다. 이 파일을 a.zip이 아닌이 파일 이름으로 다운로드하려면 어떻게해야합니까? – aliboy38

답변

2

DownloadFileAsync이 아닌 DownloadFile을 사용하는 경우 이벤트 처리기가 필요하지 않습니다.

업데이트 : OP는 파일 시스템의 파일 이름이 URL의 끝에 지정된 파일 이름을 반영하기를 원했던 것으로 밝혀졌습니다. 이 솔루션입니다 :

private void button1_Click(object sender, EventArgs e) 
{ 
    Uri uri = new Uri("http://www.yourserver/path/to/yourfile.zip"); 
    string filename = Path.GetFileName(uri.LocalPath); 

    WebClient web = new WebClient(); 
    web.DownloadFile(new Uri(url), Path.Combine(@"f:\", filename)); 
} 
+0

여전히 오류가 있습니다. 그것은 말한다 : WebClient 요청 중에 예외가 발생했습니다. – aliboy38

+0

메시지 상자에서 WHOLE 출력을 게시하십시오. – tomfanning

+0

또한이 문제를 해결하는 데 도움이되는 코드를 추가했습니다. – tomfanning

관련 문제