から/ダウンロードするファイルサーバーを取得するためのWebクライアントの方法

  今日のメイン記録、共有、ダウンロード/入手ファイルにWebクライアントを使用するには、2つの方法が。  

  いくつかの単語の男は、コードを配置し、言いました。

  最初:カプセル化法からの使用Webクライアント:DownloadFile() ;直接ダウンロードするのは簡単。

        ///  <要約> 
        /// ファイルをダウンロード(WebClient.DownloadFile)
         ///  </要約> 
        ///  ます。<param name = "downFileUrl"> ダウンロードファイルリンクアドレス</ param>の
        ///  <PARAM NAME = "関数savepath「> パス保存</ param>の
        ///  <戻り値> </戻り値> 
        公共の 静的な 文字列 DownLoadFileByWebClientStatic(文字 downFileUrl、文字列関数savepath)
        { 
            文字列の結果= 文字列.Empty;
             試し
            { 
                WebClientのwcClient = 新しい新しいWebクライアント();
                wcClient.DownloadFile(downFileUrl、関数savepath); 
                結果 = " ダウンロード成功" ; 
            } 
            キャッチ(WebException EX)
            { 
                結果 = $ " のダウンロードに失敗しました{ex.Message =エラー!} " ; 
            } 
            戻り結果; 
        } 

        ///  <概要> 
        /// ファイルをダウンロードする(wcClient.DownloadFileAsync)
         ///  </要約> 
        ///  ます。<param name = "downFileUrl"> ダウンロードファイルリンクアドレス</ param>の
        ///  <PARAM NAME = "関数savepath">パスの保存</ param>の
        ///  <戻り値> </戻り> 
        パブリック 静的 文字列 DownLoadFileMethod( downFileUrl、文字列関数savepath)
        { 
            文字列の結果= 文字列.Empty;
             試み
            { 
                WebクライアントwcClient = 新しい新しいWebクライアント(); 
                wcClient.DownloadDataCompleted + =(T、S)= > 
                { 
                    結果 = " ダウンロード成功" ; //は、直接(ステートレス?)を返さない
                }; 
                wcClient.DownloadFileAsync(新新URI(downFileUrl)、関数savepath)。
            } 
            キャッチ(WebException EX)
            { 
                結果 = $ " !の下载失败エラー= {ex.Message} " ; 
            } 
            戻り値の結果; 
        }

  第二:ファイルを読み取るために使用することは、ファイルを取得/ダウンロードをストリーミング(セルフテストを介して)

     ///  <要約> 
        /// ダウンロードファイル(ストリーム処理型)
         ///  </要約> 
        ///  <PARAM NAME = "downFileUrl"> ファイルリンクアドレスをダウンロードしてください。</ param>の
        ///  <PARAM NAME = "関数savepath「> パス保存</ param>の
        ///  <戻り値> </戻り値> 
        公共の 静的な 文字列 DownLoadFileByWebClient(文字 downFileUrl、文字列関数savepath)
        { 
            文字列の結果= 文字列.Empty;
             試し
            { 
                WebClientのwcClient = 新しい新しいWebクライアント();

                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 == 0BREAK ; 
                    StartByte + = downByte; 
                    allByte - = downByte; 
                } 
                // ファイルディレクトリ保存が存在するか否かを検出する
                場合(!File.Exists(関数savepath))
                { 
                    文字列 [] = dirArray savePath.Split(' \\ ' );
                     文字列の TEMP = 文字列。空の;
                    以下のためにINT iが= 0 - 、I <dirArray.Length 1 ; I ++ 
                    { 
                        TEMP + = dirArray [I] .Trim()+ " \\ " もし(!Directory.Exists(TEMP))
                            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 Webクライアント(の使用)のストリームへの道、およびファイルストリームを読んで、私はなぜ知らない、セルフテストに失敗し、ファイルが開かないダウンロードしてください)。私は合理的な説明を見つけていない、私はあなたがコメントを願っています。    

 ///  <要約> 
        /// ダウンロードファイル
         ///  </要約> 
        ///  ます。<param name = "URLAddress"> リソースのURL </ param>の
        ///  <PARAM NAME = "saveBasePath"> 保存ルートディレクトリ/ディレクトリ</ param>の
        ///  <戻り値> </戻り値> 
        公共の 文字列 DownFileByStream(文字 URLAddress、文字列saveBasePath)
        { 
            文字列の結果= 文字列.Empty;
             試し
            { 
                Webクライアントクライアント = 新しい新しいWebクライアント(); 
                ストリーム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)
            { 
                結果 = " ダウンロードに失敗しました!" + ex.Message; 
            } 
            戻り結果; 
        }

    不合理な場合は、そのことを歓迎します。これらは、今日の記録であり、この記事の内容のほとんどは、少し仕上げを行うにはちょうどここに見つけることができます。

    あなたはあなたにこの記事が参考に思われる場合は、「お気に入り」ボタンをクリックしてください!(/:スマイル)転載を歓迎し、ソースを明記してください。

 

おすすめ

転載: www.cnblogs.com/skyheaving/p/12499629.html