Puedes hacerlo de la siguiente forma (este ejemplo funciona con una carpeta que debe estar en la raíz del proyecto o solución):
Código:
string Ruta = Server.MapPath("~/Archivos/"); //Almacenará el archivo en una Carpeta llamada Archivos
//FU_Archivo = nombre del FileUpload
//Lbl_Error = Label para mostrar el mensaje de error
string NombreArchivo = FU_Archivo.FileName; //Obtenemos el nombre del archivo
string RutaARevisar = Ruta + NombreArchivo;
if (System.IO.File.Exists(RutaARevisar))//Verificamos que exista por seguridad
{
int Contador = 2; //Variable para cambiar el nombre el caso que exista
while (System.IO.File.Exists(RutaARevisar)) //Lazo que se ejecuta mientras exista un archivo con un nombre igual
{
NombreArchivoTemp = Contador.ToString() + NombreArchivo; //Nombre que se le da de forma temporal
RutaARevisar = Ruta + NombreArchivoTemp; //Asignamos la ruta completa concatenado con el nombre
Contador++;
}
Lbl_Error.Text = "Ya existe el archivo. Se guardó con el nombre " + NombreArchivo;
FU_Archivo.SaveAs(RutaARevisar);
}
Es un ejemplo que puede ser optimizado, pero lo escribí así para que tengas más claro el proceso que se emplea. Ojalá te sirva, esta escrito en C#. No lo he probado, pero creo que funciona. Si no es así, avisame si hay algún error.
Una cosa más... deberías probar el evento OnChange porque creo que solo funciona con Internet Explorer.
Saludos...