오늘의 주요 기록, 공유, 다운로드 사용 웹 클라이언트에 두 가지 방법 / 파일을 얻을.
몇 마디의 사람이 코드를 삽입했다.
첫 번째 : 캡슐화 방법에서 사용하는 웹 클라이언트 다음 DownloadFile은 () ; 쉽게 직접 다운로드합니다.
/// <요약> /// 파일을 다운로드 (WebClient.DownloadFile) /// </ 요약> /// <PARAM NAME = "downFileUrl"> 파일 다운로드 링크 주소 </ PARAM> /// <PARAM NAME = " savePath "> 경로 저장 </ PARAM> /// <반품> </ 반품> 공공 정적 문자열 DownLoadFileByWebClientStatic ( 문자열 downFileUrl, 문자열 savepath) { 문자열 결과 = 문자열 .Empty; 은 try { 웹 클라이언트 wcClient = 새로운 새로운 웹 클라이언트 (); wcClient.DownloadFile (downFileUrl, savepath) 결과 = " 다운로드 성공 " ; } 캐치 합니다 (WebException이 EX) { 결과 = $ " 다운로드 실패 {ex.Message = 오류!} " ; } 반환 결과; } /// <요약> /// 파일 (wcClient.DownloadFileAsync)을 다운로드 /// </ 요약> /// <PARAM NAME = "downFileUrl"> 파일 다운로드 링크 주소 </ PARAM> /// <PARAM NAME = "savepath">경로 저장 </ PARAM> /// <반품> </ 반환> 공용 정적 스트링 DownLoadFileMethod ( 문자열 downFileUrl, 문자열 savepath) { 문자열 결과 = 문자열 .Empty] 은 try { 웹 클라이언트 wcClient = 새로운 새 웹 클라이언트 (); wcClient.DownloadDataCompleted + = (T, S) = > { 결과 = " 다운로드 성공 " ; // 직접 (무?)를 반환하지 않습니다 } wcClient.DownloadFileAsync을 ( 새로운 새로운URI (downFileUrl) savePath); } 캐치 (WebException이 예) { 결과 = $ " 下载失败오류 = {ex.Message!} " ; } 반환 결과를; }
두 번째 : 파일을 읽을 수있는 사용하여 파일을 얻을 / 다운로드를 스트리밍 . (자체 테스트를 통해)
/// <요약> /// 다운로드 파일 (트림 가공 체) /// </ 요약> /// <PARAM NAME = "downFileUrl"> 파일 링크 어드레스를 다운로드 </ PARAM> /// <PARAM NAME = " savePath "> 경로 저장 </ PARAM> /// <반품> </ 반품> 공공 정적 문자열 DownLoadFileByWebClient ( 문자열 downFileUrl, 문자열 savepath) { 문자열 결과 = 문자열 .Empty; 은 try { 웹 클라이언트 wcClient = 새로운 새로운 웹 클라이언트 (); WebRequest를 webReq = 이 WebRequest.Create (downFileUrl); WebResponse를 webRes = webReq.GetResponse (); 긴 fileLength = webRes.ContentLength; SRM 스트림 = ) (webRes.GetResponseStream; 에서는 StreamReader srmReader는 = 새로운 에서는 StreamReader (SRM)을; 바이트 [] = bufferbyte는 새로운 바이트 [fileLength]; INT allByte = ( INT ) bufferbyte.Length; INT startByte는 = 0 ; 동안(fileLength> 0 ) { INT downByte = srm.Read (bufferbyte, StartByte, allByte), 경우 (downByte == 0 ) BREAK ; StartByte + = downByte, allByte - = downByte; } // 파일 저장 디렉토리가 있는지 여부를 감지 하는 경우 (! File.Exists (savepath)) { 문자열 []은 dirArray savePath.Split ( ' \\ ' ) 문자열 TEMP = 문자열.빈; 위한 ( INT 난 = 0 -; I <dirArray.Length 1 ; I ++ ) { 온도 + = dirArray [I] .Trim () + " \\ " ; 만약 (! Directory.Exists (임시)) Directory.CreateDirectory (임시) } } 하여 (하여 FileStream fsSave = 새로운 하여 FileStream (savePath, FileMode.OpenOrCreate, FileAccess.Write)) { fsSave.Write (bufferbyte, 0, Bufferbyte.Length) fsSave.Dispose (); } // 두 가지 방법을 사용하는 것과. // FileStream을 새로운 새 FS = FileStream을 (savepath, FileMode.OpenOrCreate, FileAccess.Write) // fs.Write (bufferbyte, 0, bufferbyte.Length) srm.Close (); srmReader.Close (); // FS. 닫기 (); 결과 = $ " 다운로드 성공 savepath {} = 경로 " ; } 캐치 합니다 (WebException이 EX) { 결과 = $ " = 오류! 다운로드 ex.Message을 {실패} "; } 반환 결과를; }
파일을 다운로드하여 두 번째 스트림은, 메소드 가지 이유를 모르겠어요 :( OpenRead 웹 클라이언트 스트림에 () 방법의 사용을 확보 한 다음 파일 스트림을 읽어 자체 테스트 실패, 파일 열리지되지 않음)를 다운로드. 나는 합리적인 설명을 발견하지 않은, 당신이 의견을 바랍니다.
/// <요약> /// 다운로드 파일 /// </ 요약> /// <PARAM NAME = "URLAddress"> 자원의 URL </ PARAM> /// <PARAM NAME = "saveBasePath"> 저장 루트 디렉토리 / 디렉토리 </ PARAM> /// <반품> </ 반품> 공공 문자열 DownFileByStream ( 문자열 URLAddress, 문자열 saveBasePath) { 문자열 결과 = 문자열 .Empty; 은 try { 웹 클라이언트 클라이언트 = 새로운 새로운 웹 클라이언트 (); 스트림 STR =client.OpenRead (URLAddress) 에서는 StreamReader 리더 = 새로운 새 에서는 StreamReader (STR) 의 바이트 [] 바이트 = 새로운 새 바이트 [ 1024 * 1024 ]; // 지정 크기 1M INT allybytes = ( INT ) bytes.Length; INT의 startbytes = 0 ; 그동안 (allybytes> 0 ) { INT m = str.Read (바이트 startbytes, allybytes) // 판독 바이트의 현재 위치를 얻는 IF (m == 0 ) BREAK ; startbytes + = m; allybytes - = m; } reader.Dispose (); str.Dispose (); 문자열 경로 saveBasePath = + System.IO.Path.GetFileName (URLAddress); 하여 FileStream fsWrite는 = 새로운 하여 FileStream를 (경로 FileMode.OpenOrCreate, FileAccess.Write); fsWrite.Write (바이트 0 , startbytes); fsWrite.Flush (); fsWrite.Close (); 결과 = " 下载成功! " ; } 캐치 (예외 예) { 결과 = " 다운로드 실패! " + ex.Message; } 반환 결과; }
불합리한 경우, 그 환영합니다. 다음은 오늘의 기록이다;이 문서의 내용의 대부분은 약간의 마감을하기 위해 여기에 찾을 수 있습니다.
당신이 당신에게 도움이 기사를 생각한다면, "즐겨 찾기"버튼을 클릭하십시오! (/ : 스마일) 무단 전재에 오신 것을 환영합니다, 소스를 표시하시기 바랍니다.