Cómo subir un archivo por FTP usando ASP.NET 2

Para subir un archivo usando el protocolo FTP desde una aplicación ASP.NET 2, utiliza la clase FtpWebRequest.

No olvides importar System.IO y System.Net al inicio de tu código:

  1. Imports System.Net
  2. Imports System.IO

Este es el código para subir el archivo:

  1. 'Subir Archivo por FTP
  2. ' Configurar el Request
  3. Dim ElRequest As FtpWebRequest = DirectCast(WebRequest.Create("ftp://servidorejemplo.com/folder1/archivo.zip"), FtpWebRequest)
  4. ElRequest.Credentials = New NetworkCredential("usuario", "password")
  5. ElRequest.Method = WebRequestMethods.Ftp.UploadFile
  6.  
  7. ' Leer archivo
  8. Dim BufferArchivo() As Byte = File.ReadAllBytes("D:Inetpubwwwrootarchivo.zip")
  9.  
  10. ' Subir archivo
  11. Dim ElStream As System.IO.Stream = ElRequest.GetRequestStream()
  12. ElStream.Write(BufferArchivo, 0, BufferArchivo.Length)
  13. ElStream.Close()
  14. ElStream.Dispose()

Solamente tienes que utilizar tus datos reales para la ruta del ftp, ruta local, nombre de usuario y contraseña.

Nota:
Si te sale este error:

Unable to cast object of type 'System.Net.FileWebRequest' to type 'System.Net.FtpWebRequest'

Quiere decir que estás haciendo algo similar a esto:

DirectCast(WebRequest.Create("c:\folder1\archivo.zip")

Escribe la ruta usando ftp:// en vez de c: y se solucionará el error antes mencionado.

Cómo iterar en un DataTable

Para iterar en un DataTable usa el siguiente código.

  1. Dim tabla as new DataTable()
  2. Dim Renglon as DataRow
  3. For Each Renglon in tabla.Rows
  4.  'Haz algo con Renglon("NombreDeColumna")
  5. Next

The MaximumValue cannot be less than the MinimumValue

Cuando creas un RangeValidator en una aplicación ASP.NET debes recordar establecer el tipo de dato que estás comparando.

Este es un ejemplo de un error común. Tenemos el siguiente validador:

  1. <asp:RangeValidator
  2.   ID="ValidadorMinimo"
  3.   runat="server"
  4.   ControlToValidate="NumberOfPersons"
  5.   CssClass="validador"
  6.   ErrorMessage="Minimum"
  7.   ForeColor=""
  8.   MinimumValue="2"
  9.   MaximumValue="10" >*</asp:RangeValidator>

Al abrir la página aspx que lo contiene, obtenemos el siguiente error:

The MaximumValue 10 cannot be less than the MinimumValue 2 of ValidadorMinimo.

Lo que está ocurriendo es que por default el tipo de datos es String, y hablando de cadenas de texto, el 10 es menor que el 2.

Como queremos comparar números enteros, debemos establecer la propiedad Type del validador a Integer, de esta manera:

  1. <asp:RangeValidator
  2.   ID="ValidadorMinimo"
  3.   runat="server"
  4.   ControlToValidate="NumberOfPersons"
  5.   CssClass="validador"
  6.   ErrorMessage="Minimum"
  7.   ForeColor=""
  8.   MinimumValue="2"
  9.   MaximumValue="10"
  10.   Type="Integer"
  11.   >*</asp:RangeValidator>

Templates de Dreamweaver y páginas ASP.NET con código code-behind

Existe una situación extraña cuando trabajas en un sitio web con plantillas de Dreamweaver y con ASP.NET 2.

Cuando añades una nueva página aspx, la primera línea del código es algo similar a esto:

<%@ Page Language="VB" AutoEventWireup="false" CodeFile="Contacto.aspx.vb" Inherits="Contacto" %>

Si esta página está controlada por un template de Dreamweaver, y tú modificas ese template, y luego aplicas los cambios, notarás que Dreamweaver elimina la citada línea del archivo. Lo cual simplemente hace que tu página ASP.NET no funcione más.

Puedes regresar a Visual Web Developer (o la herramienta de ASP.NET que utilices) y volver a ponerle la línea eliminada, pero si tienes muchas páginas esto puede ser una pesadilla.

Encontré un post en un foro con una solución que supuse no iba a funcionar, pero la probé y de hecho sirve!

A tus páginas aspx añádeles esta línea después de la línea de declaración:

<%--'comment--%>

De tal forma que te quede algo como esto:

<%@ Page Language="VB" AutoEventWireup="false" CodeFile="Contacto.aspx.vb" Inherits="Contacto" %>
<%--'comment--%>

Ahora pruébalo para que veas como funciona. Haz cualquier cambio a tu template de Dreamweaver, aplica el template a las páginas basadas en él, y verás que la línea permanece intacta, haciendo que la aplicación siga funcionando sin problemas.