Subir Archivos Fecha: 18/Nov/2004 (10 de Nov. del 2004)
|
Existen muchos ejemplos de como subir archivos a el servidor por medio de paginas Asp . Net pero ne he encontrado ("en lo personal") ninguno que me diga por que si se intenta subir un archivo de mas de 4.1 megas de tamaño en disco me marca un error, en este articulo vamos a tratar de explicar como podemos controlar el tamaño que el servidor nos va a permitir que nosotros subamos.
Bueno para comenzar vamos a explicar como hacer lo primero para aquellos que no lo sepan o por si quieren volver a dar un repaso. vamos a explicarlo por pasos para no perdernos en el camino;
1.- Lo primero es crear una aplicaci�n Asp . net en nuestro Visual Estudio
2.- Despu�s agregamos un nuevo web Form a nuestro proyecto.
3.- A continuaci�n agregamos un Input File a nuestro proyecto ya sea arrastrando desde la barra de herramientas o agregando el c�digo HTML siguiente:
<input type="File" id="txtUpload" runat="Server" NAME="txtUpload"/>
4.- importamos el namespaces System.IO
5.- Agregamos un bot�n a el formulario llamado btnUpload y una label llamada Mensaje
6.- y Agregamos el siguiente c�digo a el evento click del bot�n, a continuaci�n sigue c�digo en Visual Basic (o C# o C++.NET):
Private Sub btnUpload_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click ' Obtenemos la ruta donde el archivo se va a guardar en el servidor Dim TargetPath = "d:\files\" & Path.GetFileName(MyFile.PostedFile.FileName) 'y por ultimo se envia el archivo a el servidor esto e lo que hace que el archivo se ' envie al el servidor MyFile.PostedFile.SaveAs(TargetPath) 'por ultimo se le envia un mensaje al usuario avisandole el exito de su operación 'si estas creando directorios dinamicamente para evitar que marque un error por que el 'directorio no existe puedes crear el directorio por medio de la siguiente instruccion ' Directory.CreateDirectory("/path") ' "/path" =la ruta donde se guardara el archivo en el servidor mensaje.Text = "Tu archivo se recibio correctamente en:: <b>" & TargetPath & "</b>" End Sub7.- con esto tenemos a nuestra aplicación funcionando, que maravilla estamos subiendo archivos a nuestro servidor por medio de asp .net pero que pasa cuando unos de nuestro usuarios tratan de enviar un archivo de 4.2 MB o mas, mmmm...
Nos mandara un error que no se pudo subir el archivo ahora vamos a ver por que pasa esto.
Modificando la configuración por Default.
lo que esta pasando en estos momentos es que en la configuraci�n de nuestro servidor esta una pol�tica donde dice que no se debe permitir que un usuario mande mas de esa cantidad de KB a el servidro por seguridad... se preguntaran se puede solucionar esto?...Pues d�jenme decirles que si vimos a ver la forma de resolverlo en unos pocos pasos.
Como les comentaba nuestro servidor viene configurado por default con alguna opciones, pero como todo podemos cambiar esas opciones, ahora vamos a la parte de la configuración que en estos momentos nos interesa el elemento <httpRuntime> del archivo de configuración que lo que hace es que Configura las opciones del motor de tiempo de ejecución para HTTP de ASP.NET. Esta sección puede declararse en los equipos, sitios, aplicaciones o subdirectorios... seg�n la pagina de MSDN Latinoam�rica. y esta posicionado en
<configuration>
<system.web>
<httpRuntime>uno de los atributos de este elemento es
maxRequestLength : Indica el tamaño de archivo máximo que ASP.NET puede cargar. Este límite puede evitar los ataques de denegación de servicio que se producen cuando los usuarios envían archivos de gran tamaño al servidor. El tamaño se especifica en kilobytes. El valor predeterminado es 4096 KB (4 MB).
modificando este atributo podemos indicarle a nuestro servidor el tamaño m�ximo de archivos que puede recibir, algo que se me estaba escapando esto no �nicamente se puede modificar en el archivo machin.config si no que tambi�n en la configuraci�n de nuestra aplicaci�n, me refiero al web.config.
por ultimo te muestro la linea que viene el el archivo machine.config donde se tienen que hacer los cambios que requiera tu aplicación.
<httpRuntime executionTimeout="90" maxRequestLength="4096" useFullyQualifiedRedirectUrl="false" minFreeThreads="8" minLocalRequestFreeThreads="4" appRequestQueueLimit="100"/>
Fichero con el c�digo de ejemplo: juceduba_upload.zip - 2.82 KB