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;
}