Compartir a través de


Información general sobre FileUpload (Control de servidor Web)

Actualización: noviembre 2007

Mediante el control FileUpload, puede proporcionar a los usuarios un modo de enviar un archivo desde su equipo al servidor. Este control resulta útil para permitir a los usuarios cargar imágenes, archivos de texto u otros archivos.

Solicitar archivos para cargarlos

El control FileUpload muestra un cuadro de texto en el que los usuarios pueden escribir el nombre de un archivo que desean cargar en el servidor. El control también muestra un botón Examinar que abre un cuadro de diálogo de exploración de archivos. (El cuadro de diálogo que se muestra depende del sistema operativo del equipo del usuario.) Por razones de seguridad, no puede cargar previamente el nombre de un archivo en el control FileUpload.

Controlar archivos cargados

Cuando los usuarios han seleccionado un archivo para cargarlo y han enviado la página, el archivo se carga como parte de la solicitud. El archivo se almacena íntegramente en la memoria caché del servidor. Cuando finaliza la carga del archivo, se ejecuta el código de la página.

Puede tener acceso al archivo cargado de los siguientes modos:

Cuando el código se ejecuta, puede examinar las características del archivo, como su nombre, tamaño y tipo MIME, y puede guardarlo a continuación. Puede utilizar el archivo como una secuencia o una matriz de bytes. Por otro lado, el control FileUpload y el objeto HttpPostedFile admiten un método SaveAs que escribe el archivo en el disco.

No hay ninguna limitación inherente acerca de la ubicación en la que se pueden guardar los archivos cargados. Sin embargo, para guardar el archivo, el proceso de ASP.NET debe tener permiso para crear archivos en la ubicación especificada. Además, la aplicación tendría que configurarse para que requiriera una ruta de acceso absoluta (y no una ruta de acceso relativa) para guardar el archivo, lo que constituye una medida de seguridad. Si el atributo requireRootedSaveAsPath del elemento de configuración Elemento httpRuntime (Esquema de configuración de ASP.NET) se establece en true (que es el valor predeterminado), debe proporcionar una ruta de acceso absoluta al guardar el archivo cargado.

Nota:

Puede crear una ruta de acceso absoluta basada en la raíz de la aplicación utilizando el método MapPath de la clase HttpServerUtility y transfiriendo al método el operador de tilde (~), que representa la carpeta raíz de la aplicación. Para obtener más información, vea Rutas de acceso a sitios Web ASP.NET.

El tamaño máximo del archivo que se puede cargar depende del valor de la opción de configuración MaxRequestLength. Si los usuarios intentan cargar un archivo que supera este valor máximo, se producirá un error en la carga.

Seguridad y control FileUpload

Con el control FileUpload, los usuarios pueden cargar archivos que pueden ser malintencionados, como archivos de secuencias de comandos y archivos ejecutables. No puede limitar de antemano los archivos que un usuario puede cargar. Si desea limitar los tipos de archivos que un usuario puede cargar, debe examinar las características del archivo (por ejemplo, la extensión de nombre de archivo y el valor de la propiedad ContentType del archivo) después de que se haya cargado el archivo.

Nota:

Antes de que se envíe la página, puede utilizar la secuencia de comandos del cliente para examinar el nombre del archivo que un usuario ha escrito en el cuadro de texto. Sin embargo, aunque puede resultar conveniente realizar una comprobación del nombre del archivo en el cliente, esta operación no garantiza que los usuarios no puedan cargar un tipo de archivo que no sea seguro, como un archivo ejecutable.

Vea también

Tareas

Cómo: Cargar archivos con el control FileUpload de servidor Web