package handlers import ( "fmt" "os" "path/filepath" ) // GetUniquePath checks if a file or folder exists at the given baseDir with the given name. // If it does, it systematically appends " (1)", " (2)", etc., until it finds an available name. // It returns the unique filename. func GetUniquePath(baseDir, name string) string { ext := filepath.Ext(name) base := name[:len(name)-len(ext)] finalPath := filepath.Join(baseDir, name) if _, err := os.Stat(finalPath); os.IsNotExist(err) { return name } for i := 1; ; i++ { newName := fmt.Sprintf("%s (%d)%s", base, i, ext) finalPath = filepath.Join(baseDir, newName) if _, err := os.Stat(finalPath); os.IsNotExist(err) { return newName } } }