Esta sección describe los dos métodos utilizados en ASP.NET para cargar archivos en páginas web.
ASP.NET incluye dos controles que permiten a los usuarios cargar archivos al servidor web. Una vez que el servidor acepta los datos del archivo cargado, la aplicación puede guardarlos, inspeccionarlos o ignorarlos. El siguiente control permite la carga de archivos:
HtmlInputFile : control del servidor HTML
FileUpload : control web ASP.NET
Ambos controles permiten la carga de archivos, pero el control FileUpload establece automáticamente el formato de codificación, mientras que el control HtmlInputFile no.
En este tutorial, usaremos el control FileUpload. Este control permite al usuario obtener una vista previa del archivo seleccionado que se cargará. Proporciona un botón de vista previa y un cuadro de texto donde se puede ingresar el nombre del archivo.
Una vez que el usuario ingresa un nombre de archivo en el cuadro de texto o obtiene una vista previa del archivo, el método Guardar como del control FileUpload guarda el archivo en el disco duro.
La sintaxis básica de FileUpload es la siguiente:
<asp:FileUpload ID= "Uploader" runat = "server" />
La clase FileUpload se deriva de la clase WebControl y hereda todos sus elementos. La clase FileUpload tiene estas propiedades de solo lectura:
propiedad | describir |
---|---|
bytes de archivo | Devuelve un conjunto de códigos de bytes para el archivo que se va a cargar |
Contenido del archivo | Devuelve el objeto de flujo del archivo que se va a cargar. |
Nombre del archivo | Devuelve el nombre del archivo que se cargará |
Tiene archivo | Determinar si el control tiene archivos para cargar |
Archivo publicado | Devuelve una referencia al archivo cargado. |
El archivo publicado se encapsula en un objeto en forma de HttpPostedFile, al que se puede acceder a través de la propiedad PostedFile de la clase FileUpload.
La clase HttpPostedFile tiene las siguientes propiedades de uso común:
propiedad | describir |
---|---|
ContenidoLongitud | Devuelve el tamaño en bytes del archivo cargado |
Tipo de contenido | Devuelve el tipo MIME del archivo cargado |
Nombre del archivo | Devuelve el nombre completo del archivo. |
Flujo de entrada | Devuelve el objeto de flujo del archivo que se va a cargar. |
El siguiente ejemplo ilustra el control FileUpload y sus propiedades. Este formulario tiene un control FileUpload, así como un botón para guardar y un control de etiqueta con el nombre, tipo y longitud reales del archivo.
En modo diseño, la tabla se ve así:
Los códigos de archivo relevantes se enumeran a continuación:
<body> <form id="form1" runat="server"> <div> <h3> File Upload:</h3> <br /> <asp:FileUpload ID="FileUpload1" runat="server" /> <br /><br /> <asp:Button ID="btnsave" runat="server" onclick="btnsave_Click" Text="Save" /> <br /><br /> <asp:Label ID="lblmessage" runat="server" /> </div> </form></body>
El código para el botón Guardar se enumera a continuación:
protected void btnsave_Click(object sender, EventArgs e){ StringBuilder sb = new StringBuilder(); if (FileUpload1.HasFile) { try { sb.AppendFormat(" Uploading file: {0}", FileUpload1.FileName); //saving the file FileUpload1.SaveAs("<c:\SaveDirectory>" + FileUpload1.FileName); //Showing the file information sb.AppendFormat("<br/> Save As: {0}", FileUpload1.PostedFile.FileName); sb.AppendFormat("<br/> File type: {0}", FileUpload1.PostedFile.ContentType); sb.AppendFormat("<br/> File length: {0}", FileUpload1.PostedFile.ContentLength); sb.AppendFormat("<br/> File name: {0}", FileUpload1.PostedFile.FileName); }catch (Exception ex) { sb.Append("<br/> Error <br/>"); sb.AppendFormat("Unable to save file <br/> {0}", ex.Message); } } else { lblmessage.Text = sb.ToString(); }}
Preste atención a las siguientes cuestiones:
La clase StringBuilder se genera a partir del espacio de nombres System.IO, por lo que debería incluirse.
Las áreas de prueba y captura se utilizan para detectar errores y mostrar mensajes de error.