Hola, es muy fácil subir un archivo a un servidor:
1.Inserta un control HTML FileField. Este control básico de HTML ya incluye el boton examinar y obtiene la ruta
2.Dale click derecho y selecciona "Ejecutar como control de Servidor"
3.Crea un boton de servidor
4.En el boton escribe el siguiente código (te lo pongo en C#):
//Obtiene la ruta almacenada en el FileField (al cual llame flLogo)
string strFileName=flLogo.PostedFile.FileName;
//Separa de la cadena el nombre del archivo
strFileName=System.IO.Path.GetFileName(strFileName);
//Guarda el archivo
//***NOTA**** SaveAs solo funciona con rutas absolutas, por eso uso Request.MapPath, pues esta función convierte una ruta relativa a una absoluta
flLogo.PostedFile.SaveAs(Request.MapPath("..\\logos") + "\\" + txtCampo1.Text + "\\" + strFileName);
//**NOTA** .NET usa \\ en las rutas, pues toma \ por si sola como una secuencia de escape
Si usas VB practicamente lo unico q cambia es que no pones ; al final y la forma de declarar la variable.
Si tienes dudas sobre validación y sobre como crear directorios, ahi esta mi correo o sino de todos modos reviso con frecuencia el foro.