TOC

This article has been localized into Spanish by the community.

Controls:

Control FileUpload

Con ASP.NET es muy fácil aceptar la subida de archivos de usuarios. Mediante el control FileUpload puede hacerse con una pequeña cantidad de líneas de código, como verás en en siguiente ejemplo. Sin embargo, ¡recuerda que hay que tener en cuenta cuestiones de seguridad al aceptar archivos de usuarios! Estas son las especificaciones necesarias:

<form id="form1" runat="server">
    <asp:FileUpload id="FileUploadControl" runat="server" />
    <asp:Button runat="server" id="UploadButton" text="Upload" onclick="UploadButton_Click" />
    <br /><br />
    <asp:Label runat="server" id="StatusLabel" text="Upload status: " />
</form>

Y este es el código CodeBehind necesario para gestionar la subida:

protected void UploadButton_Click(object sender, EventArgs e)
{
    if(FileUploadControl.HasFile)
    {
        try
        {
            string filename = Path.GetFileName(FileUploadControl.FileName);
            FileUploadControl.SaveAs(Server.MapPath("~/") + filename);
            StatusLabel.Text = "Upload status: File uploaded!";
        }
        catch(Exception ex)
        {
            StatusLabel.Text = "Upload status: The file could not be uploaded. The following error occured: " + ex.Message;
        }
    }
}

Como puedes ver, todo es relativamente simple. Una vez que se hace clic en UploadButton, comprobamos si se ha especificado un archivo en el control de subida. Si se ha especificado, utilizamos el método SaveAs de los controles FileUpload para guardar el archivo. Utilizamos el root de nuestro proyecto (usamos el método MapPath para hacerlo) así como la parte del nombre de la ruta que el usuario especificó. Si todo va bien, establecemos la propiedad Text de la StatusLabel para avisar al usuario. Si no, se emitirá una excepción y avisaremos también al usuario.

Este ejemplo servirá, pero como puedes ver, no se comprueba nada. El usuario puede subir cualquier tipo de archivo y el tamaño del archivo solo está limitado por la configuración del servidor. Un ejemplo más robusto podría tener este aspecto:

protected void UploadButton_Click(object sender, EventArgs e)
{
    if(FileUploadControl.HasFile)
    {
        try
        {
            if(FileUploadControl.PostedFile.ContentType == "image/jpeg")
            {
                if(FileUploadControl.PostedFile.ContentLength < 102400)
                {
                    string filename = Path.GetFileName(FileUploadControl.FileName);
                    FileUploadControl.SaveAs(Server.MapPath("~/") + filename);
                    StatusLabel.Text = "Upload status: File uploaded!";
                }
                else
                    StatusLabel.Text = "Upload status: The file has to be less than 100 kb!";
            }
            else
                StatusLabel.Text = "Upload status: Only JPEG files are accepted!";
        }
        catch(Exception ex)
        {
            StatusLabel.Text = "Upload status: The file could not be uploaded. The following error occured: " + ex.Message;
        }
    }
}

Aquí utilizamos dos propiedades, ContentLength y ContentType, para hacer algunas comprobaciones básicas del archivo que el usuario está intentando subir. Los mensajes de estado deberían indicar con claridad de qué se trata y podrás cambiarlo para que se ajuste a tus necesidades.


This article has been fully translated into the following languages: Is your preferred language not on the list? Click here to help us translate this article into your language!