[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!





[ASP.NET] Subiendo un archivo a un servidor FTP con un FileUpload « MSExpertos escribió
[...] [ASP.NET] Subiendo un archivo a un servidor FTP con un FileUpload [...]
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
Resumen Post 2012 « Todo en ASP.NET escribió
[...] [ASP.NET] Subiendo un archivo a un servidor FTP con un FileUpload [...]