C# FtpWebRequest ContentLength, Fail?

Hoy he tenido un curioso problema,

estaba implementando un cliente ftp en C# ayudándome del ejemplo http://www.vcskicks.com/download-file-ftp.php

Una vez conectado con el Servidor FTP y listo para descarga del archivo, el programador quiere guardar la longitud del archivo para utilizarla en un ProgressBar.

Pues bien, resulta que la aplicación hacía Pim, pam, plin y daba la excepción:

Me he quedao rallao, porque después de comprovar por activa y pasiva la ruta del archivo, ésta era correcta, y por tanto no podía ser que no se encontrara el archivo. Así pues el problema podía  ser el acceso.

Indagando por Google, y después de realizar una serie de pruebas, he conseguido obtener respuesta del servidor,

Mmmmm…. ¿-1? Imposible, un archivo no puede ocupar -1 Bytes xD.  Ya no cabe duda, el problema es del servidor, que no quiere dar la longitud del archivo.

Como soy muy curioso he intentado buscar el porqué de todo ésto, y lo he encontrado en MSDN:

The ContentLength property contains the value of the Content-Length header returned with the response. If the Content-Length header is not set in the response, ContentLength is set to the value -1.

http://en.wikipedia.org/wiki/List_of_HTTP_header_fields – The length of the request body in octets (8-bit bytes)

>> El servidor puede desconocer el ContentLength o simplemente omitirlo, tocate los webos.

Resumiendo, parece que no voy a poder saber el tamaño del archivo antes de descargarlo sin antes hacer una lista a fondo de ellos.

**** 7votes
1 Comentario »  | Categorías:  C#, internet Tags: , , , ,

One Response to C# FtpWebRequest ContentLength, Fail?

  1. franhp says:

    Interesante … justamente el otro día intentaba mejorar mi cliente ftp y pensé en hacer eso del progressbar, ahora ya se cómo 😀

Leave a Reply

Your email address will not be published. Required fields are marked *