Subir archivo a servidor en C#




Este código referencia al evento de un botón que sube un archivo a un servidor utilizando el lenguaje C#.
En este ejemplo se utiliza una aplicación que diseñé para cargar manuales de notebooks según el modelo, la marca y otros atributos de interés. Además de subir el archivo al servidor también se guarda su dirección con los datos correspondientes en una base de datos.


protected void btnCargar_Click(object sender, EventArgs e)
    {
        string strFileName;
        string strFilePath;
        string strFolder;
        strFolder = Server.MapPath("./Manuales/" + drpMarca.SelectedValue);
        
        // Devuelve el nombre del archivo que se expone.

        strFileName = oArchivo.PostedFile.FileName;
        strFileName = Path.GetFileName(strFileName);
        if (oArchivo.Value != "")
        {
            // Crea la carpeta si no existe.
            if (!Directory.Exists(strFolder))
            {
                Directory.CreateDirectory(strFolder);
            }
            // Gurada el archivo cargado en el servidor
            strFilePath = strFolder + "//" + strFileName;

            if (File.Exists(strFilePath))
            {
                lblResultado.Text = strFileName + " ya existe en el servidor!";
            }
            else
            {
                //Se chequea que los textbox tengan información para agregar a la base de datos
                if (drpMarca.SelectedValue == "")
                {
                    lblResultado.Text = "Debe detallar la marca.";
                }
                else if (txtModelo.Text == "")
                {
                    lblResultado.Text = "Debe detallar el modelo.";
                }
                else
                {
                    string oNombre = strFilePath;
                    string oMarca = drpMarca.SelectedValue;
                    string oModelo = txtModelo.Text;
                    string oObs = txtObs.Text;
                    Manual oManual = new Manual(oNombre, oMarca, oModelo, oObs);
                    int oResultado = LogicaManual.Agregar(oManual);
                    if (oResultado > 0)
                    {
                        oArchivo.PostedFile.SaveAs(strFilePath);
                        lblResultado.Text = strFileName + " fue exitosamente cargado.";
                        drgManuales.DataSource = LogicaManual.Listar();
                        drgManuales.DataBind();
                    }
                    else if (oResultado == 0)
                    {
                        lblResultado.Text = strFileName + " ya existe en el servidor.";
                    }
                    else
                    {
                        lblResultado.Text = strFileName + " no fué ingresado por un error en la base de datos.";
                    }
                }
            }
        }
        else
        {
            lblResultado.Text = "Click 'Examinar' para seleccionarl el archivo a cargar.";
        }
        // Muestra el resultado de la carga.
        frmConfirmacion.Visible = true;
    }