Todo en ASP.NET

Blog dedicado a la programación con Visual Studio .NET….. especialmente desarrollo Web

[ASP.NET] Subiendo un archivo a un servidor FTP con un FileUpload

Publicado por Julio Avellaneda en 07/03/2012

Hace poco me preguntaban en el blog sobre como era posible subir un archivo a un servidor FTP utilizando el FileUpload de ASP.NET, esto se dio ya que tenia un post en el cual mostraba como poder usar ese control (mira el post acá), así que en esta entrada deseo responder a esa pregunta.

Lo primero a tener en cuenta es que el control fileupload no funciona nativamente con el protocolo FTP, sino con el HTTP, así que debemos realiza algunos pequeños cambios y usar alguna clase de .net que nos permita trabajar con FTP; así que manos a la obra, lo primero es diseñar una interfaz para la selección del archivo, y tres campos de texto para el ingreso de:

  • Servidor FTP
  • Usuario
  • Clave

Entonces el HTML de nuestra página sería:

   1:  <h1>Subir archivo a un servidor FTP</h1>
   2:  <hr />
   3:  <fieldset>
   4:      <legend>Configuración FTP</legend>
   5:      <table>
   6:          <tr>
   7:              <td><b>Servidor:</b></td>
   8:              <td><asp:TextBox ID="txtServidor" runat="server" Width="300px"></asp:TextBox></td>
   9:          </tr>
  10:          <tr>
  11:              <td><b>Usuario:</b></td>
  12:              <td><asp:TextBox ID="txtUsuario" runat="server" Width="300px"></asp:TextBox></td>
  13:          </tr>
  14:          <tr>
  15:              <td><b>Clave:</b></td>
  16:              <td><asp:TextBox ID="txtClave" runat="server" Width="300px"></asp:TextBox></td>
  17:          </tr>
  18:          <tr>
  19:              <td><b>Archivo:</b></td>
  20:              <td><asp:FileUpload ID="fileUpload1" runat="server" /></td>
  21:          </tr>
  22:          <tr>
  23:              <td colspan="2">
  24:                  <asp:Button Text="Subir Archivo FTP" runat="server" ID="btnSubirArchivo" onclick="btnSubirArchivo_Click" />
  25:              </td>
  26:          </tr>
  27:      </table>
  28:  </fieldset>

Y ahora el código del evento clic del botón:

   1:  if (fileUpload1.HasFile)
   2:  {
   3:      var server = String.Format("{0}files/{1}", txtServidor.Text, fileUpload1.FileName);
   4:      var user = txtUsuario.Text;
   5:      var pass = txtClave.Text;
   6:   
   7:      var request = WebRequest.Create(server);
   8:      request.Method = WebRequestMethods.Ftp.UploadFile;
   9:      request.Credentials = new NetworkCredential(user, pass);
  10:   
  11:      var sourceStream = new StreamReader(fileUpload1.FileContent);
  12:      var fileContents = Encoding.UTF8.GetBytes(sourceStream.ReadToEnd());
  13:      sourceStream.Close();
  14:      request.ContentLength = fileContents.Length;
  15:   
  16:      var requestStream = request.GetRequestStream();
  17:      requestStream.Write(fileContents, 0, fileContents.Length);
  18:      requestStream.Close();
  19:   
  20:      var response = (FtpWebResponse)request.GetResponse();
  21:      lblEstado.Text = response.StatusDescription;
  22:      response.Close();
  23:  }

Y listo, estamos tomando el archivo del fileupload, pero en este caso utilizamos fileupload1.FileContent.

Espero les sea de utilidad, como siempre les dejo el código del ejemplo, saludos!

Descarga el ejemplo!

About these ads

3 comentarios hacia “[ASP.NET] Subiendo un archivo a un servidor FTP con un FileUpload”

  1. [...] [ASP.NET] Subiendo un archivo a un servidor FTP con un FileUpload [...]

  2. Yack escribió

    Buenas Tardes:
    Una consulta al estar codificado el archivo con “Encoding.UTF8″ como hago para luego descargarlo y ver la informacion sin codificar.
    Muchas Gracias

  3. [...] [ASP.NET] Subiendo un archivo a un servidor FTP con un FileUpload [...]

Deja un comentario

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Conectando a %s

 
Seguir

Recibe cada nueva publicación en tu buzón de correo electrónico.

Únete a otros 1.631 seguidores

%d bloggers like this: