Upload de ficheros en .NET

1
25268

En el desarrollo de aplicaciones Web, puede resultar interesante o necesario realizar uploads (cargas) de ficheros desde el cliente al servidor. En este tutorial veremos como podemos hacerlo de forma sencilla y rápida en la plataforma de Microsoft.

Preparación del entorno

Una vez arrancado el Visual Studio, creamos un nuevo proyecto:

Vamos a crear un proyecto de aplicación Web ASP.NET de Visual Basic:

Y lo llamaremos, en este caso, UploadAutentia.

El asistente crea todos los ficheros necesarios para que la aplicación funcione correctamente:

Ahora ya tenemos todo listo y podemos empezar a hacer pruebas…

Creación del formulario Web

Abrimos el formulario (fichero WebForm1.aspx) y, en la vista de diseño

agregamos desde la lista de componentes (botón toolbox, se despliega al poner el puntero del ratón sobre el) un File Field (al que llamaremos filUpload) y dos Label, una encima y otra debajo (con nombres lblTitulo y lblResultadorespectivamente) del File Field

Tenemos que decir al Visual Studio que los elementos que hemos creado van a ser elementos que se ejecuten en el servidor, para ello, pinchamos sobre ellos con el botón derecho del ratón y en el menú que se despliega seleccionamos la opción Run as Server Control:

También añadiremos un Submit Button, al que llamaremos btnSubmit, y que, al igual que hicimos con los otros componentes, especificaremos que se debe ejecutar como un control en el servidor:

Este es el aspecto final que tendrá el formulario:

Ahora, hacemos doble clic sobre el botón de submit que hemos añadido y se abre una ventana con el código Visual Basic de la clase que manejará el funcionamiento de la página aspx (el formulario que acabamos de crear):

En ese código hay dos procedimientos: el procedimiento Page_Load se ejecuta cuando se carga la página, y elbtnSubmit_ServerClick se llama cuando se hace clic sobre el botón submit

A continuación vamos a añadir el código necesario en ambos procedimientos para realizar el upload de ficheros

Procedimiento Page_Load

El código de este procedimiento será el siguiente:

Private pathCompletoUpload As String

Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
‘Put user code to initialize the page here
Dim pathAplicacion As String
Dim carpetaUpload As String
Dim directorio As String

pathAplicacion = Request.PhysicalApplicationPath
carpetaUpload = «upload»
pathCompletoUpload = pathAplicacion & carpetaUpload

 directorio = Dir(pathCompletoUpload, FileAttribute.Directory)
If (directorio = «») Then
MkDir(pathCompletoUpload)
End If

End Sub

El código en azul corresponde a una variable global de la clase, y por tanto accesible desde todos sus procedimientos, que almacenará la ruta física en la que se guardarán los ficheros que se deseen cargar en el servidor

El código en color púrpura es el que se encarga de crear dicha ruta. Hemos elegido que en este caso se almacenen los ficheros en una carpeta llamada «upload» en el directorio donde se encuentra ubicada la aplicación, que extraemos mediante el comando  Request.PhysicalApplicationPath

En el fragmento de código de color rojo se comprueba si la carpeta que vamos a usar existe ya, y en ese caso no se hace nada. Pero si no existe, mediante la llamada MkDir(pathCompletoUpload) creamos la carpeta.

Como se ha dicho anteriormente, este método se ejecuta al cargar la página. Ahora veamos el código que se ejecuta al presionar el botón de submit.

El procedimiento btnSubmit_ServerClick

El procedimiento quedará finalmente como sigue:

Private Sub btnSubmit_ServerClick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnSubmit.ServerClick

Dim fileName As String = filUpload.PostedFile.FileName()
fileName = System.IO.Path.GetFileName(fileName)

Try
filUpload.PostedFile.SaveAs(pathCompletoUpload & «\» & fileName)
lblResultado.InnerHtml = «<b><font color=»»#0000FF»»>La carga del fichero fue correcta</font></b>»

Catch ex As Exception
lblResultado.InnerHtml = «<b><font color=»»#FF0000″»>Se ha producido un error al cargar el fichero</font></b>»
End Try

End Sub

El texto en rojo coge el nombre del fichero que se haya enviado. Primero en la línea de código Dim fileName As String = filUpload.PostedFile.FileName(),  cogemos el nombre del fichero del objeto del formulario (del File Field), que nos lo manda completo (con toda la ruta del fichero en el cliente) y luego nos quedamos sólo con el nombre del fichero propiamente dicho (con la llamada System.IO.Path.GetFileName(fileName))

El código en color azul es el que guarda en el servidor el fichero enviado, en la carpeta creada al cargar la página.

Los textos en púrpura y verde escriben en la etiqueta lblResultado el resultado de la operación.

Ya estamos en disposición de probar la aplicación completa…

Subiendo ficheros al servidor

Antes de empezar a utilizar la aplicación, hay que realizar un paso previo sin el cual ésta no funcionará.

Tal como se vio en el  tutorial de log4net publicado también en «Adictos al Trabajo», las aplicaciones .NET son ejecutadas en el servidor por un usuario especial, el usuario ASPNET. Para que la aplicación funcione, hay que dar a este usuario permisos de escritura en la carpeta en que se vayan a guardar los ficheros subidos. Para ello, pinchamos con el botón derecho sobre dicha carpeta (por defecto, c:\Inetpub\wwwroot\nombre_aplicacion) y seleccionamos «Propiedades»:

y en la pantalla que se abre, vamos a la pestaña «Seguridad» y localizamos al usuario «ASPNET» en la lista. Una vez localizado, además de todos los permisos que tenga ya asignados hay que proporcionarle permiso de escritura en la carpeta:

Con esto conseguiremos que se puedan grabar los ficheros, por lo que ya estamos preparados para probar la aplicación. La abrimos en el navegador…

seleccionamos el fichero…

pulsamos «Enviar» y…

Tal como vemos, la carga se ha realizado (parece) correctamente. Comprobemos si es cierto. Vamos a la carpeta en que se ubica la aplicación (c:\Inetpub\wwwroot\UploadAutentia en nuestro ejemplo)

y comprobamos que ha aparecido una carpeta «upload»:

y dentro de ella…

… El fichero que hemos enviado

Pues ya lo tenemos andando… Ahora os queda a vosotros el mejorar esta aplicación para adaptarla a vuestras necesidades.

Agradecimientos

Quiero agradecer a www.4guysfromrolla.com, que me ayudó a resolver gran parte de las dudas y problemas que me surgieron…

Conclusión

Espero que este tutorial os haya servido para resolver vuestras dudas, pero si no ha sido así, ya sabéis que en mi empresa, Autentia, estamos para ayudaros con vuestros desarrollos

1 COMENTARIO

  1. Estuvo genial Tu manual en ASP nose si me puedas ayudar Soy Programdor Junior y no se como hacer una bandeja de entrada en Asp me podrias Ayudar Si es Que se Puede hacer En ASP esa cuestion De eso depende que me quede en la empresa donde Laboro…

DEJA UNA RESPUESTA

Por favor ingrese su comentario!

He leído y acepto la política de privacidad

Por favor ingrese su nombre aquí

Información básica acerca de la protección de datos

  • Responsable:
  • Finalidad:
  • Legitimación:
  • Destinatarios:
  • Derechos:
  • Más información: Puedes ampliar información acerca de la protección de datos en el siguiente enlace:política de privacidad