Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Actualización: noviembre 2007
Mediante el control FileUpload de servidor Web, puede proporcionar a los usuarios un modo de enviar un archivo desde su equipo al servidor. El archivo que se va a cargar se envía al servidor como parte de la solicitud del explorador durante la devolución de datos. Una vez que finaliza la carga del archivo, puede administrar el archivo en su código.
Nota: |
|---|
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. |
Para cargar un archivo con el control FileUpload de servidor Web
Agregue un control FileUpload a la página.
Nota:Por razones de seguridad, no puede cargar previamente el nombre de un archivo en el control FileUpload.
En un controlador de un evento, como el evento Load de la página, haga lo siguiente:
Compruebe que el control FileUpload tiene un archivo cargado; para ello, consulte su propiedad HasFile.
Compruebe el nombre o el tipo MIME del archivo para asegurarse de que los usuarios han cargado un archivo que desea aceptar. Para comprobar el tipo MIME, obtenga el objeto HttpPostedFile expuesto como la propiedad PostedFile del control FileUpload. Podrá obtener el tipo MIME a continuación al comprobar la propiedad ContentType del archivo enviado.
Nota de seguridad:Los tipos MIME de los archivos cargados se pueden suplantar en algunos casos, por ello, revisar únicamente el tipo MIME del archivo no constituye una comprobación de seguridad confiable.
Guarde el archivo en la ubicación que especifique. Puede llamar al método SaveAs del objeto HttpPostedFile. Si lo desea, puede administrar también el archivo cargado como una matriz o secuencia de bytes mediante la propiedad InputStream del objeto HttpPostedFile.
En el ejemplo siguiente se ilustra cómo se trabaja con un archivo cargado. El código comprueba la extensión de nombre del archivo cargado en una lista codificada de forma rígida con las extensiones de nombre de archivo permitidas y rechaza todos los demás tipos de archivos. El archivo se escribe a continuación en una carpeta UploadedImages del sitio Web actual. El archivo cargado se guarda con el mismo nombre de archivo que tenía en el equipo cliente. Se utiliza la propiedad FileName del control FileUpload porque la propiedad FileName del objeto HttpPostedFile devuelve la ruta de acceso completa del archivo del equipo cliente.
Nota de seguridad:No muestre la ruta de acceso ni el nombre del archivo guardado a los usuarios; si lo hace, puede desvelar información que podría resultar útil a usuarios malintencionados.
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load If IsPostBack Then Dim path As String = Server.MapPath("~/UploadedImages/") Dim fileOK As Boolean = False If FileUpload1.HasFile Then Dim fileExtension As String fileExtension = System.IO.Path. _ GetExtension(FileUpload1.FileName).ToLower() Dim allowedExtensions As String() = _ {".jpg", ".jpeg", ".png", ".gif"} For i As Integer = 0 To allowedExtensions.Length - 1 If fileExtension = allowedExtensions(i) Then fileOK = True End If Next If fileOK Then Try FileUpload1.PostedFile.SaveAs(path & _ FileUpload1.FileName) Label1.Text = "File uploaded!" Catch ex As Exception Label1.Text = "File could not be uploaded." End Try Else Label1.Text = "Cannot accept files of this type." End If End If End If End Subprotected void Page_Load(object sender, EventArgs e) { if(IsPostBack) { Boolean fileOK = false; String path = Server.MapPath("~/UploadedImages/"); if (FileUpload1.HasFile) { String fileExtension = System.IO.Path.GetExtension(FileUpload1.FileName).ToLower(); String[] allowedExtensions = {".gif", ".png", ".jpeg", ".jpg"}; for (int i = 0; i < allowedExtensions.Length; i++) { if (fileExtension == allowedExtensions[i]) { fileOK = true; } } } if (fileOK) { try { FileUpload1.PostedFile.SaveAs(path + FileUpload1.FileName); Label1.Text = "File uploaded!"; } catch (Exception ex) { Label1.Text = "File could not be uploaded."; } } else { Label1.Text = "Cannot accept files of this type."; } } }
Vea también
Conceptos
Información general sobre FileUpload (Control de servidor Web)