FileUpload (Clase)
Muestra un control de cuadro de texto y un botón Examinar que permiten a los usuarios seleccionar un archivo para cargarlo al servidor.
System.Web.UI.Control
System.Web.UI.WebControls.WebControl
System.Web.UI.WebControls.FileUpload
Ensamblado: System.Web (en System.Web.dll)
El tipo FileUpload expone los siguientes miembros.
| Nombre | Descripción | |
|---|---|---|
|
AccessKey | Obtiene o establece la clave de acceso que permite navegar rápidamente al control de servidor web. (Se hereda de WebControl). |
|
Adapter | Obtiene el adaptador específico del explorador para el control. (Se hereda de Control). |
|
AppRelativeTemplateSourceDirectory | Obtiene o establece el directorio virtual relativo a la aplicación del objeto Page o el objeto UserControl que contiene este control. (Se hereda de Control). |
|
Attributes | Obtiene la colección de atributos arbitrarios (sólo para su representación) que no corresponden a propiedades del control. (Se hereda de WebControl). |
|
BackColor | Obtiene o establece el color de fondo del control de servidor web. (Se hereda de WebControl). |
|
BindingContainer | Infraestructura. Obtiene el control que contiene el enlace de datos de este control. (Se hereda de Control). |
|
BorderColor | Obtiene o establece el color de borde del control Web. (Se hereda de WebControl). |
|
BorderStyle | Obtiene o establece el estilo del borde del control de servidor web. (Se hereda de WebControl). |
|
BorderWidth | Obtiene o establece el ancho del borde del control de servidor web. (Se hereda de WebControl). |
|
ChildControlsCreated | Obtiene un valor que indica si se han creado controles secundarios del control de servidor. (Se hereda de Control). |
|
ClientID | Obtiene el identificador de control del formato HTML generado por ASP.NET. (Se hereda de Control). |
|
ClientIDMode | Obtiene o establece el algoritmo que se utiliza para generar el valor de la propiedad ClientID. (Se hereda de Control). |
|
ClientIDSeparator | Obtiene un valor de carácter que representa el carácter separado utilizado en la propiedad ClientID. (Se hereda de Control). |
|
Context | Obtiene el objeto HttpContext asociado al control de servidor para la solicitud Web actual. (Se hereda de Control). |
|
Controls | Obtiene un objeto ControlCollection que representa los controles secundarios para un control de servidor especificado en la jerarquía de la interfaz de usuario. (Se hereda de Control). |
|
ControlStyle | Obtiene el estilo del control de servidor web. Esta propiedad la usan principalmente los programadores de controles. (Se hereda de WebControl). |
|
ControlStyleCreated | Obtiene un valor que indica si se ha creado un objeto Style para la propiedad ControlStyle. Esta propiedad la usan principalmente los programadores de controles. (Se hereda de WebControl). |
|
CssClass | Obtiene o establece la clase hoja de estilo en cascada (CSS) presentada por el control de servidor web en el cliente. (Se hereda de WebControl). |
|
DataItemContainer | Obtiene una referencia al contenedor de nomenclatura si este implementa IDataItemContainer. (Se hereda de Control). |
|
DataKeysContainer | Obtiene una referencia al contenedor de nomenclatura si este implementa IDataKeysControl. (Se hereda de Control). |
|
DesignMode | Obtiene un valor que indica si se está utilizando un control en una superficie de diseño. (Se hereda de Control). |
|
Enabled | Obtiene o establece un valor que indica si el control de servidor web está habilitado. (Se hereda de WebControl). |
|
EnableTheming | Obtiene o establece un valor que indica si los temas se aplican a este control. (Se hereda de WebControl). |
|
EnableViewState | Obtiene o establece un valor que indica si el control de servidor debe mantener su estado de vista y el de los controles secundarios que contiene, en el cliente que realiza la solicitud. (Se hereda de Control). |
|
Events | Obtiene una lista de delegados de controladores de eventos del control. Esta propiedad es de sólo lectura. (Se hereda de Control). |
|
FileBytes | Obtiene una matriz de los bytes de un archivo que se especifica mediante un control FileUpload. |
|
FileContent | Obtiene un objeto Stream que señala a un archivo para cargarlo utilizando el control FileUpload. |
|
FileName | Obtiene el nombre de un archivo en un cliente que se cargará con el control FileUpload. |
|
Font | Obtiene las propiedades de fuente asociadas al control de servidor web. (Se hereda de WebControl). |
|
ForeColor | Obtiene o establece el color de primer plano (normalmente el color del texto) del control de servidor web. (Se hereda de WebControl). |
|
HasAttributes | Obtiene un valor que indica si el control tiene establecido algún atributo. (Se hereda de WebControl). |
|
HasChildViewState | Obtiene un valor que indica si los controles secundarios del control de servidor actual tienen guardada alguna configuración del estado de vista. (Se hereda de Control). |
|
HasFile | Obtiene un valor que indica si el control FileUpload contiene un archivo. |
|
Height | Obtiene o establece el alto del control de servidor Web. (Se hereda de WebControl). |
|
ID | Obtiene o establece el identificador de programación asignado al control de servidor. (Se hereda de Control). |
|
IdSeparator | Infraestructura. Obtiene el carácter utilizado para separar los identificadores de control. (Se hereda de Control). |
|
IsChildControlStateCleared | Obtiene un valor que indica si los controles que se encuentran en este control tienen estado de control. (Se hereda de Control). |
|
IsEnabled | Obtiene un valor que indica si está habilitado el control. (Se hereda de WebControl). |
|
IsTrackingViewState | Obtiene un valor que indica si el control de servidor está guardando los cambios realizados en su estado de vista. (Se hereda de Control). |
|
IsViewStateEnabled | Obtiene un valor que indica si el estado de vista está habilitado para este control. (Se hereda de Control). |
|
LoadViewStateByID | Obtiene un valor que indica si el control participa en la carga de su estado de vista mediante ID en lugar de índice. (Se hereda de Control). |
|
NamingContainer | Obtiene una referencia al contenedor de nomenclatura del control de servidor, que crea un espacio de nombres único para diferenciar los distintos controles de servidor que tienen el mismo valor para la propiedad Control.ID. (Se hereda de Control). |
|
Page | Obtiene una referencia a la instancia Page que contiene el control de servidor. (Se hereda de Control). |
|
Parent | Obtiene una referencia al control principal del control de servidor en la jerarquía de controles de página. (Se hereda de Control). |
|
PostedFile | Obtiene el objeto HttpPostedFile subyacente para un archivo que se carga utilizando el control FileUpload. |
|
RenderingCompatibility | Obtiene o establece un valor que especifica la versión de ASP.NET compatible con los elementos HTML representados. (Se hereda de Control). |
|
Site | Obtiene información sobre el contenedor en que se encuentra el control actual cuando se representa en una superficie de diseño. (Se hereda de Control). |
|
SkinID | Obtiene o establece la máscara que se va a aplicar al control. (Se hereda de WebControl). |
|
Style | Obtiene una colección de atributos de texto que se representan como atributo de estilo en la etiqueta externa del control de servidor web. (Se hereda de WebControl). |
|
SupportsDisabledAttribute | Obtiene un valor que indica si el control debe establecer en "disabled" el atributo disabled del elemento HTML presentado cuando el valor de la propiedad IsEnabled del control es false. (Se hereda de WebControl). |
|
TabIndex | Obtiene o establece el índice de tabulación del control de servidor web. (Se hereda de WebControl). |
|
TagKey | Obtiene el valor HtmlTextWriterTag correspondiente a este control de servidor web. Esta propiedad la usan principalmente los programadores de controles. (Se hereda de WebControl). |
|
TagName | Obtiene el nombre de la etiqueta del control. Esta propiedad la usan principalmente los programadores de controles. (Se hereda de WebControl). |
|
TemplateControl | Obtiene o establece una referencia a la plantilla que contiene este control. (Se hereda de Control). |
|
TemplateSourceDirectory | Obtiene el directorio virtual de Page o UserControl que contiene el control de servidor actual. (Se hereda de Control). |
|
ToolTip | Obtiene o establece el texto que se muestra cuando el puntero del mouse se desplaza sobre el control de servidor web. (Se hereda de WebControl). |
|
UniqueID | Obtiene el identificador único calificado jerárquicamente para el control de servidor. (Se hereda de Control). |
|
ViewState | Obtiene un diccionario con información de estado que le permite guardar y restaurar el estado de vista de un control de servidor en las distintas solicitudes de la misma página. (Se hereda de Control). |
|
ViewStateIgnoresCase | Obtiene un valor que indica si el objeto StateBag no distingue mayúsculas de minúsculas. (Se hereda de Control). |
|
ViewStateMode | Obtiene o establece el modo del estado de vista de este control. (Se hereda de Control). |
|
Visible | Obtiene o establece un valor que indica si un control de servidor se debe representar como interfaz de usuario en la página. (Se hereda de Control). |
|
Width | Obtiene o establece el ancho del control de servidor web. (Se hereda de WebControl). |
| Nombre | Descripción | |
|---|---|---|
|
AddAttributesToRender | Agrega los atributos y estilos HTML de un control FileUpload para procesarlos en el objeto System.Web.UI.HtmlTextWriter especificado. (Invalida a WebControl.AddAttributesToRender(HtmlTextWriter)). |
|
AddedControl | Se le llama una vez que se ha agregado un control secundario a la colección Controls del Control objeto. (Se hereda de Control). |
|
AddParsedSubObject | Indica al control de servidor que se ha analizado un elemento, ya sea XML o HTML, y agrega dicho elemento al objeto ControlCollection del control de servidor. (Se hereda de Control). |
|
ApplyStyle | Copia en el control Web todos los elementos no vacíos del estilo especificado, sobrescribiendo los elementos de estilo existentes del mismo. Este método lo usan principalmente los programadores de controles. (Se hereda de WebControl). |
|
ApplyStyleSheetSkin | Aplica al control las propiedades de estilo definidas en la hoja de estilos de la página. (Se hereda de Control). |
|
BuildProfileTree | Infraestructura. Recopila información sobre el control de servidor y la pasa a la propiedad Trace para que se muestre cuando está habilitada la traza de la página. (Se hereda de Control). |
|
ClearCachedClientID | Infraestructura. Establece en null el valor de ClientID almacenado en caché. (Se hereda de Control). |
|
ClearChildControlState | Elimina la información sobre el estado de control de los controles secundarios del control de servidor. (Se hereda de Control). |
|
ClearChildState | Elimina la información sobre el estado de vista y el estado de control de los controles secundarios del control de servidor. (Se hereda de Control). |
|
ClearChildViewState | Elimina la información sobre el estado de vista de todos los controles secundarios del control de servidor. (Se hereda de Control). |
|
ClearEffectiveClientIDMode | Infraestructura. Establece la propiedad ClientIDMode de la instancia del control actual y de cualquier control secundario en Inherit. (Se hereda de Control). |
|
CopyBaseAttributes | Copia las propiedades no encapsuladas por el objeto Style del control de servidor web especificado al control de servidor web desde el que se efectúa la llamada al método. Este método lo usan principalmente los programadores de controles. (Se hereda de WebControl). |
|
CreateChildControls | Lo llama el marco de trabajo de las páginas ASP.NET para indicar a los controles de servidor que utilizan la implementación basada en la composición que creen los controles secundarios que contengan como forma de preparar la devolución o representación de los datos. (Se hereda de Control). |
|
CreateControlCollection | Crea un nuevo objeto ControlCollection para guardar los controles secundarios (tanto literales como de servidor) del control de servidor. (Se hereda de Control). |
|
CreateControlStyle | Crea el objeto de estilo que utiliza la clase WebControl de forma interna para implementar todas las propiedades relacionadas con el estilo. Este método lo usan principalmente los programadores de controles. (Se hereda de WebControl). |
|
DataBind() | Enlaza un origen de datos al control de servidor invocado y a todos sus controles secundarios. (Se hereda de Control). |
|
DataBind(Boolean) | Enlaza un origen de datos al control de servidor que se ha invocado y a todos sus controles secundarios con una opción para generar el evento DataBinding. (Se hereda de Control). |
|
DataBindChildren | Enlaza un origen de datos a los controles secundarios del control de servidor. (Se hereda de Control). |
|
Dispose | Habilita un control de servidor para que realice la limpieza final antes de que se libere de la memoria. (Se hereda de Control). |
|
EnsureChildControls | Determina si el control de servidor contiene controles secundarios. Si no tiene controles secundarios, los crea. (Se hereda de Control). |
|
EnsureID | Crea un identificador para controles que no tiene un identificador asignado. (Se hereda de Control). |
|
Equals(Object) | Determina si el objeto Object especificado es igual al objeto Object actual. (Se hereda de Object). |
|
Finalize | Permite que un objeto intente liberar recursos y realizar otras operaciones de limpieza antes de ser reclamado por la recolección de elementos no utilizados. (Se hereda de Object). |
|
FindControl(String) | Busca un control de servidor con el parámetro id especificado en el contenedor de nomenclatura actual. (Se hereda de Control). |
|
FindControl(String, Int32) | Infraestructura. Busca el contenedor de nomenclatura actual para un control de servidor con el id especificado y un entero, que se especifica en el parámetro pathOffset, que ayuda a realizar la búsqueda. Esta versión del método FindControl no se debe reemplazar. (Se hereda de Control). |
|
Focus | Establece el foco de entrada en un control. (Se hereda de Control). |
|
GetDesignModeState | Infraestructura. Obtiene datos en tiempo de diseño para un control. (Se hereda de Control). |
|
GetHashCode | Actúa como función hash para un tipo concreto. (Se hereda de Object). |
|
GetRouteUrl(Object) | Obtiene la dirección URL que corresponde a un conjunto de parámetros de ruta. (Se hereda de Control). |
|
GetRouteUrl(RouteValueDictionary) | Obtiene la dirección URL que corresponde a un conjunto de parámetros de ruta. (Se hereda de Control). |
|
GetRouteUrl(String, Object) | Obtiene la dirección URL que corresponde a un conjunto de parámetros de ruta y un nombre de ruta. (Se hereda de Control). |
|
GetRouteUrl(String, RouteValueDictionary) | Obtiene la dirección URL que corresponde a un conjunto de parámetros de ruta y un nombre de ruta. (Se hereda de Control). |
|
GetType | Obtiene el objeto Type de la instancia actual. (Se hereda de Object). |
|
GetUniqueIDRelativeTo | Devuelve la parte correspondiente al prefijo de la propiedad UniqueID del control especificado. (Se hereda de Control). |
|
HasControls | Determina si el control de servidor contiene controles secundarios. (Se hereda de Control). |
|
HasEvents | Devuelve un valor que indica si se registran eventos para el control o los controles secundarios. (Se hereda de Control). |
|
IsLiteralContent | Infraestructura. Determina si el control de servidor alberga únicamente contenido literal. (Se hereda de Control). |
|
LoadControlState | Restaura información de estado de control de una solicitud de página anterior guardada por el método SaveControlState. (Se hereda de Control). |
|
LoadViewState | Restaura la información de estado de vista de una solicitud anterior guardada con el método SaveViewState. (Se hereda de WebControl). |
|
MapPathSecure | Recupera la ruta de acceso física a la que se asigna una ruta de acceso virtual, absoluta o relativa. (Se hereda de Control). |
|
MemberwiseClone | Crea una copia superficial del objeto Object actual. (Se hereda de Object). |
|
MergeStyle | Copia en el control Web todos los elementos no vacíos del estilo especificado, pero no sobrescribe los elementos de estilo existentes en el mismo. Este método lo usan principalmente los programadores de controles. (Se hereda de WebControl). |
|
OnBubbleEvent | Determina si el evento del control de servidor debe pasarse a la jerarquía de controles de servidor de la interfaz de usuario de la página. (Se hereda de Control). |
|
OnDataBinding | Provoca el evento DataBinding. (Se hereda de Control). |
|
OnInit | Provoca el evento Init. (Se hereda de Control). |
|
OnLoad | Provoca el evento Load. (Se hereda de Control). |
|
OnPreRender | Provoca el evento PreRender para el control FileUpload. (Invalida a Control.OnPreRender(EventArgs)). |
|
OnUnload | Provoca el evento Unload. (Se hereda de Control). |
|
OpenFile | Obtiene un objeto Stream utilizado para leer un archivo. (Se hereda de Control). |
|
RaiseBubbleEvent | Asigna los orígenes del evento y su información al control principal del control. (Se hereda de Control). |
|
RemovedControl | Se le llama una vez que se ha quitado un control secundario de la colección Controls del Control objeto. (Se hereda de Control). |
|
Render | Envía el contenido del control FileUpload al objeto System.Web.UI.HtmlTextWriter especificado, que escribe el contenido a procesar en el cliente. (Invalida a WebControl.Render(HtmlTextWriter)). |
|
RenderBeginTag | Presenta la etiqueta HTML de apertura del control en el sistema de escritura especificado. Este método lo usan principalmente los programadores de controles. (Se hereda de WebControl). |
|
RenderChildren | Envía el contenido del control secundario del control de servidor a un objeto HtmlTextWriter suministrado, que escribe el contenido que se va a representar en el cliente. (Se hereda de Control). |
|
RenderContents | Presenta el contenido del control en el sistema de escritura especificado. Este método lo usan principalmente los programadores de controles. (Se hereda de WebControl). |
|
RenderControl(HtmlTextWriter) | Envía el contenido del control de servidor a un objeto HtmlTextWriter que se proporciona y almacena la información de traza sobre el control si dicha traza está habilitada. (Se hereda de Control). |
|
RenderControl(HtmlTextWriter, ControlAdapter) | Coloca el contenido de un control de servidor en un objeto HtmlTextWriter proporcionado, utilizando un objeto ControlAdapter proporcionado. (Se hereda de Control). |
|
RenderEndTag | Presenta la etiqueta HTML de cierre del control en el escritor especificado. Este método lo usan principalmente los programadores de controles. (Se hereda de WebControl). |
|
ResolveAdapter | Obtiene el adaptador de controles que se encarga de representar el control especificado. (Se hereda de Control). |
|
ResolveClientUrl | Obtiene una dirección URL que el explorador puede utilizar. (Se hereda de Control). |
|
ResolveUrl | Convierte una dirección URL en una que el cliente solicitante pueda utilizar. (Se hereda de Control). |
|
SaveAs | Guarda el contenido de un archivo cargado en una ruta de acceso especificada en el servidor web. |
|
SaveControlState | Guarda los cambios de estado de un control de servidor que se hayan producido desde el momento en que se devolvieron al servidor los datos de la página. (Se hereda de Control). |
|
SaveViewState | Guarda cualquier estado modificado después de invocar el método TrackViewState. (Se hereda de WebControl). |
|
SetDesignModeState | Establece datos en tiempo de diseño para un control. (Se hereda de Control). |
|
SetRenderMethodDelegate | Infraestructura. Asigna un delegado de controlador de eventos para representar el control de servidor y su contenido en el control principal. (Se hereda de Control). |
|
ToString | Devuelve una cadena que representa el objeto actual. (Se hereda de Object). |
|
TrackViewState | Hace que el control efectúe un seguimiento de los cambios de su estado de vista para que se puedan almacenar en la propiedad ViewState del objeto. (Se hereda de WebControl). |
| Nombre | Descripción | |
|---|---|---|
|
DataBinding | Se produce cuando el control de servidor se enlaza a un origen de datos. (Se hereda de Control). |
|
Disposed | Se produce cuando un control de servidor se libera de la memoria, lo que constituye la última fase del período de duración de un control de servidor cuando se solicita una página ASP.NET. (Se hereda de Control). |
|
Init | Tiene lugar al inicializar el control de servidor, que es el primer paso en su ciclo de vida. (Se hereda de Control). |
|
Load | Se produce cuando el control de servidor se carga en el objeto Page. (Se hereda de Control). |
|
PreRender | Se produce una vez que se carga el objeto Control, pero antes de su representación. (Se hereda de Control). |
|
Unload | Se produce cuando el control de servidor se descarga de la memoria. (Se hereda de Control). |
| Nombre | Descripción | |
|---|---|---|
|
FindDataSourceControl | Devuelve el origen de datos que está asociado al control de datos del control especificado. (Definido por DynamicDataExtensions). |
|
FindFieldTemplate | Devuelve la plantilla de campo para la columna especificada en el contenedor de nomenclatura del control especificado. (Definido por DynamicDataExtensions). |
|
FindMetaTable | Devuelve el objeto de metatabla para el control de datos contenedor. (Definido por DynamicDataExtensions). |
| Nombre | Descripción | |
|---|---|---|
|
IAttributeAccessor.GetAttribute | Infraestructura. Obtiene un atributo del control Web con el nombre especificado. (Se hereda de WebControl). |
|
IAttributeAccessor.SetAttribute | Establece un atributo del control Web con el nombre y el valor especificados. (Se hereda de WebControl). |
|
IControlBuilderAccessor.ControlBuilder | Para obtener una descripción de este miembro, vea IControlBuilderAccessor.ControlBuilder. (Se hereda de Control). |
|
IControlDesignerAccessor.GetDesignModeState | Para obtener una descripción de este miembro, vea IControlDesignerAccessor.GetDesignModeState. (Se hereda de Control). |
|
IControlDesignerAccessor.SetDesignModeState | Para obtener una descripción de este miembro, vea IControlDesignerAccessor.SetDesignModeState. (Se hereda de Control). |
|
IControlDesignerAccessor.SetOwnerControl | Infraestructura. Para obtener una descripción de este miembro, vea IControlDesignerAccessor.SetOwnerControl. (Se hereda de Control). |
|
IControlDesignerAccessor.UserData | Para obtener una descripción de este miembro, vea IControlDesignerAccessor.UserData. (Se hereda de Control). |
|
IDataBindingsAccessor.DataBindings | Para obtener una descripción de este miembro, vea IDataBindingsAccessor.DataBindings. (Se hereda de Control). |
|
IDataBindingsAccessor.HasDataBindings | Para obtener una descripción de este miembro, vea IDataBindingsAccessor.HasDataBindings. (Se hereda de Control). |
|
IExpressionsAccessor.Expressions | Para obtener una descripción de este miembro, vea IExpressionsAccessor.Expressions. (Se hereda de Control). |
|
IExpressionsAccessor.HasExpressions | Para obtener una descripción de este miembro, vea IExpressionsAccessor.HasExpressions. (Se hereda de Control). |
|
IParserAccessor.AddParsedSubObject | Para obtener una descripción de este miembro, vea IParserAccessor.AddParsedSubObject. (Se hereda de Control). |
En este tema:
Introduction
La clase FileUpload muestra un control de cuadro de texto y un botón Examinar que permiten a los usuarios seleccionar un archivo en el cliente y cargarlo en el servidor web. El usuario especifica el archivo que desea cargar escribiendo su ruta de acceso completa en el equipo local (por ejemplo, C:\MisArchivos\ArchivoPrueba.txt) en el cuadro de texto del control. También puede seleccionar el archivo haciendo clic en el botón Examinar y buscándolo después en el cuadro de diálogo Elegir archivo.
Utilice la propiedad FileName para obtener el nombre de un archivo de un cliente que desee cargar utilizando el control FileUpload. El nombre de archivo que devuelve esta propiedad no incluye la ruta de acceso del archivo en el cliente.
La propiedad FileContent obtiene un objeto Stream que señala a un archivo para cargarlo. Utilice esta propiedad para obtener acceso al contenido del archivo en forma de bytes. Por ejemplo, puede usar el objeto Stream devuelto por la propiedad FileContent para leer el contenido del archivo en forma de bytes y almacenarlo en una matriz de bytes. O bien, puede utilizar la propiedad FileBytes para recuperar todos los bytes del archivo.
La propiedad PostedFile obtiene el objeto HttpPostedFile subyacente para el archivo que se va a cargar. Puede utilizar esta propiedad para tener acceso a otras propiedades del archivo. La propiedad ContentLength obtiene la longitud del archivo. La propiedad ContentType obtiene el tipo de contenido MIME del archivo. También puede utilizar la propiedad PostedFile para obtener acceso a la propiedad FileName, la propiedad InputStream y el método SaveAs. Por otro lado, la propiedad FileName, la propiedad FileContent y el método SaveAs proporcionan la misma funcionalidad.
Guardando archivos cargados
El control FileUpload no guarda automáticamente un archivo en el servidor después de que el usuario lo seleccione para cargarlo. Debe proporcionar explícitamente un control o un mecanismo que permita al usuario enviar el archivo especificado. Por ejemplo, proporcione un botón donde el usuario pueda hacer clic para cargar el archivo. El código que escriba para guardar el archivo especificado debe llamar al método SaveAs, que guarda el contenido de un archivo en una ruta especificada del servidor. Normalmente, se llama al método SaveAs en un método de control de eventos para un evento que inicia una devolución de datos al servidor. Por ejemplo, si se proporciona un botón para enviar un archivo, podría incluir el código para guardar el archivo en el método de control de eventos del evento clic.
Antes de llamar al método SaveAs para guardar el archivo en el servidor, compruebe por medio de la propiedad HasFile si el control FileUpload contiene un archivo. Si la propiedad HasFile devuelve true, llame al método SaveAs. Si devuelve false, muestra un mensaje al usuario que indica que el control no contiene un archivo. No compruebe la propiedad PostedFile para averiguar si existe un archivo para cargar, porque esta propiedad contiene de manera predeterminada 0 bytes. Como consecuencia, la propiedad PostedFile devuelve un valor no nulo aunque el control FileUpload esté en blanco.
Consideraciones de seguridad
Cuando llame al método SaveAs, especifique la ruta de acceso completa del directorio en el que deba guardarse el archivo cargado. Si no especifica explícitamente una ruta de acceso en el código de su aplicación, se producirá una excepción cuando un usuario intente cargar un archivo. Este comportamiento ayuda a mantener seguros los archivos del servidor, al impedir que los usuarios puedan escribir en ubicaciones arbitrarias de la estructura de directorios de la aplicación y, a la vez, evitar el acceso a los directorios raíz confidenciales.
El método SaveAs escribe el archivo cargado en el directorio especificado. Por consiguiente, la aplicación ASP.NET debe tener derechos de escritura en el directorio del servidor. La aplicación dispone de dos medios para obtener acceso de escritura. Se puede conceder explícitamente derecho de escritura a la cuenta en que se está ejecutando la aplicación, en el directorio en que se van a guardar los archivos cargados. Si se prefiere, se puede aumentar el nivel de confianza que se concede a la aplicación ASP.NET. Para obtener acceso de escritura al directorio de ejecución de la aplicación, ésta debe otorgar al objeto AspNetHostingPermission un nivel de confianza establecido en el valor AspNetHostingPermissionLevel.Medium. Un aumento del nivel de confianza aumenta el acceso de la aplicación a los recursos del servidor. Tenga en cuenta que esta estrategia no es segura, puesto que un usuario malintencionado que se haga con el control de la aplicación también podrá trabajar con este nivel de confianza superior. El procedimiento recomendado es ejecutar una aplicación ASP.NET en el contexto de un usuario con los privilegios mínimos necesarios para que se ejecute la aplicación. Para obtener más información acerca de la seguridad en aplicaciones ASP.NET, vea Procedimientos de seguridad básicos para aplicaciones web y Niveles de confianza y archivos de directivas de ASP.NET.
Limitaciones de la memoria
Un procedimiento para protegerse de los ataques por denegación de servicio consiste en limitar el tamaño de los archivos que pueden cargarse por medio del control FileUpload. Establezca un límite de tamaño que sea adecuado para los tipos de archivos que prevea que se cargarán. El límite de tamaño predeterminado es 4096 kilobytes (KB) o 4 megabytes (MB). Puede permitir la carga de archivos mayores estableciendo el atributo maxRequestLength del elemento httpRuntime. Para aumentar el tamaño máximo de archivo permitido para la aplicación completa, defina el atributo maxRequestLength en el archivo Web.config. Para aumentar el tamaño máximo de archivo permitido para una página determinada, defina el atributo maxRequestLength en el elemento location del archivo Web.config. Para obtener un ejemplo, vea Elemento location (Esquema de configuración de ASP.NET).
Durante la carga de archivos grandes, un usuario también podría recibir el mensaje de error siguiente:
aspnet_wp.exe (PID: 1520) was recycled because memory consumption exceeded 460 MB (60 percent of available RAM).
Si los usuarios reciben este mensaje de error, aumente el valor del atributo memoryLimit en processModel del elemento del archivo Web.config de la aplicación. El atributo memoryLimit especifica la cantidad de memoria máxima que puede utilizar un proceso de trabajo. Si el proceso de trabajo rebasa la cantidad especificada por memoryLimit, se crea un proceso nuevo para reemplazarlo, y se reasignan todas las solicitudes actuales al nuevo proceso.
Puede controlar si el archivo cargado se almacena temporalmente en la memoria o en el servidor, mientras se procesa la solicitud, estableciendo el atributo requestLengthDiskThreshold del elemento httpRuntime. Este atributo permite administrar el tamaño del búfer del flujo de entrada. El valor predeterminado es 256 bytes. El valor especificado no debe superar el valor especificado para el atributo maxRequestLength.
Utilizar el control FileUpload con el control UpdatePanel
El control FileUpload está diseñado para usarse solo en escenarios de postback y no de postback asincrónico durante la presentación parcial de páginas. Cuando se usa un control FileUpload dentro de un control UpdatePanel, el archivo se debe cargar usando un control que sea un objeto PostBackTrigger para el panel. Los controles UpdatePanel se usan para actualizar regiones seleccionadas de una página en lugar de actualizar la página entera con una devolución de datos. Para obtener más información, vea Información general sobre el control UpdatePanel y Información general sobre la representación parcial de páginas.
Sintaxis de la declaración
<asp:FileUpload
AccessKey="string"
BackColor="color name|#dddddd"
BorderColor="color name|#dddddd"
BorderStyle="NotSet|None|Dotted|Dashed|Solid|Double|Groove|Ridge|
Inset|Outset"
BorderWidth="size"
CssClass="string"
Enabled="True|False"
EnableTheming="True|False"
EnableViewState="True|False"
Font-Bold="True|False"
Font-Italic="True|False"
Font-Names="string"
Font-Overline="True|False"
Font-Size="string|Smaller|Larger|XX-Small|X-Small|Small|Medium|
Large|X-Large|XX-Large"
Font-Strikeout="True|False"
Font-Underline="True|False"
ForeColor="color name|#dddddd"
Height="size"
ID="string"
OnDataBinding="DataBinding event handler"
OnDisposed="Disposed event handler"
OnInit="Init event handler"
OnLoad="Load event handler"
OnPreRender="PreRender event handler"
OnUnload="Unload event handler"
runat="server"
SkinID="string"
Style="string"
TabIndex="integer"
ToolTip="string"
Visible="True|False"
Width="size"
/>
Hay un proyecto de sitio web de Visual Studio con código fuente disponible para este tema: Descargar.
Esta sección contiene los cuatro ejemplos siguientes:
-
En el primer ejemplo se muestra cómo crear un control FileUpload que guarda los archivos en una ruta de acceso que se especifica en el código.
-
En el segundo ejemplo se muestra cómo crear un control FileUpload que guarda los archivos en un directorio especificado del sistema de archivos de la aplicación.
-
En el tercer ejemplo se muestra cómo crear un control FileUpload que guarda los archivos en una ruta de acceso especificada y limita el tamaño de los archivos que pueden cargarse.
-
En el cuarto ejemplo se muestra cómo crear un control FileUpload que guarda los archivos en una ruta de acceso especificada y sólo permite cargar archivos con la extensión .doc o .xls.
Precaución
|
|---|
|
Estos ejemplos muestran la sintaxis básica del control FileUpload, pero no todos los procedimientos de comprobación de errores necesarios que deben realizarse antes de guardar el archivo. Para obtener un ejemplo más completo, vea SaveAs. |
En el ejemplo siguiente se muestra cómo crear un control FileUpload que guarda los archivos en una ruta de acceso que se especifica en el código. Se llama al método SaveAs para guardar el archivo en el servidor en la ruta de acceso especificada.
<%@ Page Language="C#" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <script runat="server"> protected void UploadButton_Click(object sender, EventArgs e) { // Specify the path on the server to // save the uploaded file to. String savePath = @"c:\temp\uploads\"; // Before attempting to perform operations // on the file, verify that the FileUpload // control contains a file. if (FileUpload1.HasFile) { // Get the name of the file to upload. String fileName = FileUpload1.FileName; // Append the name of the file to upload to the path. savePath += fileName; // Call the SaveAs method to save the // uploaded file to the specified path. // This example does not perform all // the necessary error checking. // If a file with the same name // already exists in the specified path, // the uploaded file overwrites it. FileUpload1.SaveAs(savePath); // Notify the user of the name of the file // was saved under. UploadStatusLabel.Text = "Your file was saved as " + fileName; } else { // Notify the user that a file was not uploaded. UploadStatusLabel.Text = "You did not specify a file to upload."; } } </script> <html xmlns="http://www.w3.org/1999/xhtml" > <head runat="server"> <title>FileUpload Example</title> </head> <body> <form id="form1" runat="server"> <div> <h4>Select a file to upload:</h4> <asp:FileUpload id="FileUpload1" runat="server"> </asp:FileUpload> <br /><br /> <asp:Button id="UploadButton" Text="Upload file" OnClick="UploadButton_Click" runat="server"> </asp:Button> <hr /> <asp:Label id="UploadStatusLabel" runat="server"> </asp:Label> </div> </form> </body> </html>
En el ejemplo siguiente se muestra cómo crear un control FileUpload que guarda los archivos en un directorio especificado del sistema de archivos de la aplicación. La propiedad HttpRequest.PhysicalApplicationPath permite obtener la ruta física del sistema de archivos del directorio raíz para la aplicación de servidor actualmente ejecutada. Se llama al método SaveAs para guardar el archivo en el servidor en la ruta de acceso especificada.
<%@ Page Language="C#" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <script runat="server"> protected void UploadButton_Click(object sender, EventArgs e) { // Save the uploaded file to an "Uploads" directory // that already exists in the file system of the // currently executing ASP.NET application. // Creating an "Uploads" directory isolates uploaded // files in a separate directory. This helps prevent // users from overwriting existing application files by // uploading files with names like "Web.config". string saveDir = @"\Uploads\"; // Get the physical file system path for the currently // executing application. string appPath = Request.PhysicalApplicationPath; // Before attempting to save the file, verify // that the FileUpload control contains a file. if (FileUpload1.HasFile) { string savePath = appPath + saveDir + Server.HtmlEncode(FileUpload1.FileName); // Call the SaveAs method to save the // uploaded file to the specified path. // This example does not perform all // the necessary error checking. // If a file with the same name // already exists in the specified path, // the uploaded file overwrites it. FileUpload1.SaveAs(savePath); // Notify the user that the file was uploaded successfully. UploadStatusLabel.Text = "Your file was uploaded successfully."; } else { // Notify the user that a file was not uploaded. UploadStatusLabel.Text = "You did not specify a file to upload."; } } </script> <html xmlns="http://www.w3.org/1999/xhtml" > <head runat="server"> <title>FileUpload Class Example</title> </head> <body> <h3>FileUpload Class Example: Save To Application Directory</h3> <form id="form1" runat="server"> <div> <h4>Select a file to upload:</h4> <asp:FileUpload id="FileUpload1" runat="server"> </asp:FileUpload> <br/><br/> <asp:Button id="UploadButton" Text="Upload file" OnClick="UploadButton_Click" runat="server"> </asp:Button> <hr /> <asp:Label id="UploadStatusLabel" runat="server"> </asp:Label> </div> </form> </body> </html>
En el ejemplo siguiente se muestra cómo crear un control FileUpload que guarda los archivos en una ruta de acceso que se especifica en el código. El control limita el tamaño de archivo que se puede cargar a 5 MB. La propiedad PostedFile se utiliza para obtener acceso a la propiedad ContentLength subyacente y devolver el tamaño del archivo. Si el tamaño del archivo que se carga es inferior a 2 MB, se llama al método SaveAs para guardarlo en la ruta especificada del servidor. Además de comprobar la configuración de tamaño máximo de archivo en el código de la aplicación, puede establecer el atributo maxRequestLength del elemento httpRuntime en un tamaño máximo permitido, en el archivo de configuración de la aplicación.
<%@ Page Language="C#" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <script runat="server"> protected void UploadButton_Click(object sender, EventArgs e) { // Specify the path on the server to // save the uploaded file to. string savePath = @"c:\temp\uploads\"; // Before attempting to save the file, verify // that the FileUpload control contains a file. if (FileUpload1.HasFile) { // Get the size in bytes of the file to upload. int fileSize = FileUpload1.PostedFile.ContentLength; // Allow only files less than 2,100,000 bytes (approximately 2 MB) to be uploaded. if (fileSize < 2100000) { // Append the name of the uploaded file to the path. savePath += Server.HtmlEncode(FileUpload1.FileName); // Call the SaveAs method to save the // uploaded file to the specified path. // This example does not perform all // the necessary error checking. // If a file with the same name // already exists in the specified path, // the uploaded file overwrites it. FileUpload1.SaveAs(savePath); // Notify the user that the file was uploaded successfully. UploadStatusLabel.Text = "Your file was uploaded successfully."; } else { // Notify the user why their file was not uploaded. UploadStatusLabel.Text = "Your file was not uploaded because " + "it exceeds the 2 MB size limit."; } } else { // Notify the user that a file was not uploaded. UploadStatusLabel.Text = "You did not specify a file to upload."; } } </script> <html xmlns="http://www.w3.org/1999/xhtml" > <head runat="server"> <title>FileUpload Class Example</title> </head> <body> <form id="form1" runat="server"> <div> <h4>Select a file to upload:</h4> <asp:FileUpload id="FileUpload1" runat="server"> </asp:FileUpload> <br/><br/> <asp:Button id="UploadButton" Text="Upload file" OnClick="UploadButton_Click" runat="server"> </asp:Button> <hr /> <asp:Label id="UploadStatusLabel" runat="server"> </asp:Label> </div> </form> </body> </html>
En el ejemplo siguiente se muestra cómo crear un control FileUpload que guarda los archivos en una ruta de acceso que se especifica en el código. Este ejemplo sólo permite cargar archivos con la extensión .doc o .xls. Se llama al método Path.GetExtension para devolver la extensión del archivo que se carga. Si el archivo tiene una extensión .doc o .xls, se llama al método SaveAs para guardarlo en la ruta especificada del servidor.
<%@ Page Language="C#" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <script runat="server"> protected void UploadBtn_Click(object sender, EventArgs e) { // Specify the path on the server to // save the uploaded file to. string savePath = @"c:\temp\uploads"; // Before attempting to save the file, verify // that the FileUpload control contains a file. if (FileUpload1.HasFile) { // Get the name of the file to upload. string fileName = Server.HtmlEncode(FileUpload1.FileName); // Get the extension of the uploaded file. string extension = System.IO.Path.GetExtension(fileName); // Allow only files with .doc or .xls extensions // to be uploaded. if ((extension == ".doc") || (extension == ".xls")) { // Append the name of the file to upload to the path. savePath += fileName; // Call the SaveAs method to save the // uploaded file to the specified path. // This example does not perform all // the necessary error checking. // If a file with the same name // already exists in the specified path, // the uploaded file overwrites it. FileUpload1.SaveAs(savePath); // Notify the user that their file was successfully uploaded. UploadStatusLabel.Text = "Your file was uploaded successfully."; } else { // Notify the user why their file was not uploaded. UploadStatusLabel.Text = "Your file was not uploaded because " + "it does not have a .doc or .xls extension."; } } } </script> <html xmlns="http://www.w3.org/1999/xhtml" > <head runat="server"> <title>FileUpload Class Example</title> </head> <body> <form id="form1" runat="server"> <div> <h4>Select a file to upload:</h4> <asp:FileUpload id="FileUpload1" runat="server"> </asp:FileUpload> <br/><br/> <asp:Button id="UploadBtn" Text="Upload file" OnClick="UploadBtn_Click" runat="server"> </asp:Button> <hr /> <asp:Label id="UploadStatusLabel" runat="server"> </asp:Label> </div> </form> </body> </html>
Windows 7, Windows Vista SP1 o posterior, Windows XP SP3, Windows XP SP2 x64 Edition, Windows Server 2008 (no se admite Server Core), Windows Server 2008 R2 (se admite Server Core con SP1 o posterior), Windows Server 2003 SP2
.NET Framework no admite todas las versiones de todas las plataformas. Para obtener una lista de las versiones compatibles, vea Requisitos de sistema de .NET Framework.
Precaución