WebClient manera de conseguir el servidor de archivos para descarga / desde

  Hoy en día el registro principal, comparte dos maneras de utilizar WebClient descargar / obtener archivos.  

  Hombre de pocas palabras, dijo, coloque el código.

  La primera: el uso de métodos de encapsulación cliente Web: el DownloadFile () ; facilita la descarga directa.

        ///  <Resumen> 
        /// descargar el archivo (WebClient.DownloadFile)
         ///  </ Sumario> 
        ///  <param name = "downFileUrl"> dirección del enlace Descargar archivo </ param> 
        ///  <param name = " savepath "> Guardar ruta </ param> 
        ///  <Devoluciones> </ Devoluciones> 
        pública  estática  cadena DownLoadFileByWebClientStatic ( cadena downFileUrl, cadena savepath) 
        { 
            cadena Resultado = cadena .Empty;
             el try 
            { 
                WebClient wcClient = nueva nueva del cliente Web ();
                wcClient.DownloadFile (downFileUrl, savepath); 
                Resultado = " éxito descarga " ; 
            } 
            la captura (el WebException EX) 
            { 
                Resultado = $ " descarga fallida {ex.Message = Error!} " ; 
            } 
            retorno Resultado; 
        } 

        ///  <summary> 
        /// descargar el archivo (wcClient.DownloadFileAsync)
         ///  </ Sumario> 
        ///  <param name = "downFileUrl"> dirección del enlace descargar archivo </ param> 
        ///  <param name = "savepath">Guardar la ruta </ param>
        ///  <Devoluciones> </ Devoluciones> 
        pública  estática  Cadena DownLoadFileMethod ( Cadena downFileUrl, Cadena savepath) 
        { 
            Cadena Resultado = Cadena .Empty;
             el try 
            { 
                WebClient wcClient = nueva nueva del cliente Web (); 
                wcClient.DownloadDataCompleted + = (T, S) = > 
                { 
                    el Resultado = " descarga éxito " ; // no regresa directamente (sin estado?) 
                }; 
                wcClient.DownloadFileAsync ( nueva nuevaUri (downFileUrl), savepath); 
            } 
            Catch (WebException ex) 
            { 
                resultado = $ " 下载失败error = {ex.Message!} " ; 
            } 
            Devolver resultado; 
        }

  La segunda: el uso de leer archivos de streaming descargar / obtener el archivo . (A través de la auto-test)

     ///  <summary> 
        /// descarga de archivos (forma Stream Processing)
         ///  </ resumen> 
        ///  <param name = "downFileUrl"> descargar la dirección de enlace del archivo </ param> 
        ///  <param name = " savepath "> Guardar ruta </ param> 
        ///  <Devoluciones> </ Devoluciones> 
        pública  estática  cadena DownLoadFileByWebClient ( cadena downFileUrl, cadena savepath) 
        { 
            cadena Resultado = cadena .Empty;
             el try 
            { 
                WebClient wcClient = nueva nueva del cliente Web ();

                WebRequest webReq = WebRequest.Create (downFileUrl); 
                WebResponse WebRes = webReq.GetResponse ();
                largo filelength = webRes.ContentLength; 
                Stream srm = webRes.GetResponseStream (); 
                StreamReader srmReader = nuevo StreamReader (SRM); 

                byte [] bufferbyte = nuevo  byte [filelength];
                int allByte = ( int ) bufferbyte.Length;
                int startByte = 0 ;
                mientras(Filelength> 0 ) 
                { 
                    int downByte = srm.Read (bufferbyte, StartByte, allByte);
                     si (downByte == 0 ) PAUSA ; 
                    StartByte + = downByte; 
                    allByte - = downByte; 
                } 
                // detectar si existe directorio de almacenamiento de archivos 
                si (! los File.Exists (savepath)) 
                { 
                    cadena [] = dirArray savePath.Split ( ' \\ ' );
                     cadena TEMP = cadena.Vacío;
                    para ( int i = 0 ; i <dirArray.Length - 1 ; i ++ ) 
                    { 
                        temp + = dirArray [i] .trim () + " \\ " ;
                        si (! Directory.Exists (temp)) 
                            Directory.CreateDirectory (temp); 
                    } 
                } 

                Usando (FileStream fsSave = nuevo FileStream (savepath, FileMode.OpenOrCreate, FileAccess.Write)) 
                { 
                    fsSave.Write (bufferbyte, 0, Bufferbyte.Length); 
                    fsSave.Dispose (); 
                } 
                
                // equivalente a usar ambos métodos.
                // los FileStream nuevos nuevos FS = el FileStream (savepath, FileMode.OpenOrCreate, FileAccess.Write);
                 // fs.Write (bufferbyte, 0, bufferbyte.Length); 
                srm.Close (); 
                srmReader.Close (); 
                // FS. el Close (); 

                Resultado = $ " descarga éxito savepath {} = ruta " ; 
            } 
            la captura (el WebException EX) 
            { 
                Resultado = $ " ! descarga no ex.Message {} = Error "; 
            } 
            Devolver resultado; 
        }
        

     La segunda corriente de descarga de archivos, el método se conecta a obtener :( uso de OpenRead cliente Web () manera de corriente, y luego leer la secuencia de archivo, no sé por qué , la auto-prueba falló , descargue el archivo no se abre). No he encontrado una explicación razonable, espero que comentas.    

 ///  <Resumen> 
        /// archivo de descarga
         ///  </ Sumario> 
        ///  <param name = "URLAddress"> recursos de la URL </ param> 
        ///  <param name = "saveBasePath"> Guardar el directorio raíz / directorio </ param> 
        ///  <volverá> </ Devoluciones> 
        pública  cadena DownFileByStream ( cadena URLAddress, cadena saveBasePath) 
        { 
            cadena Resultado = cadena .Empty;
             el try 
            { 
                el cliente Web Client = nueva nueva del cliente Web (); 
                corriente STR =client.OpenRead (URLAddress); 
                el lector StreamReader = nueva nueva del StreamReader (STR); 

                byte [] bytes = new new  byte [ 1024 * 1024 ]; // tamaño personalizado 1 M 
                int allybytes = ( int ) bytes.Length;
                 int startbytes = 0 ; 

                al mismo tiempo (allybytes> 0 ) 
                { 
                    int m = str.Read (bytes, startbytes, allybytes);   // obtener la posición actual del byte de lectura 
                    IF (m == 0 )
                         ROTURA ;
                    startbytes + = m; 
                    allybytes - = m; 
                } 

                Reader.Dispose (); 
                str.Dispose (); 
                
                string path = saveBasePath + System.IO.Path.GetFileName (URLAddress); 
                FileStream fsWrite = nuevo FileStream (path, FileMode.OpenOrCreate, FileAccess.Write); 
                fsWrite.Write (bytes, 0 , startbytes); 
                fsWrite.Flush (); 
                fsWrite.Close (); 

                resultado = " 下载成功! " ; 
            }
            la captura (Exception ex) 
            { 
                Resultado = " descarga no! " + ex.Message; 
            } 
            retorno Resultado; 
        }

    Si no son razonables, la bienvenida a eso. Estos son el historial de hoy, la mayor parte de los contenidos de este artículo se puede encontrar a la aquí sólo para hacer un poco de acabado.

    Si cree que este artículo útil para usted, por favor haga clic en el botón "Favoritos"! (/: Smile) bienvenido a imprimir, por favor indique la fuente.

 

Supongo que te gusta

Origin www.cnblogs.com/skyheaving/p/12499629.html
Recomendado
Clasificación