---
title: "Slumpa bild även från undermappar!"
type: "forum-thread"
url: "https://www.webforum.nu/amne/asp/129373-slumpa-bild-även-från-undermappar"
topic: "ASP"
topic_url: "https://www.webforum.nu/amne/asp"
author: "paddan"
published: "2005-06-03T12:11:15.000Z"
updated: "2005-07-05T08:59:38.000Z"
replies: 10
views: 544
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/asp/129373-slumpa-bild-även-från-undermappar"
---

# Slumpa bild även från undermappar!

## #1 — paddan, 2005-06-03T12:11Z

HEj!
Behöver verkligen hjälp.---!!!!
Hej jag skulle vilja att detta sciptet även slumpar i från mappen under mappar också...!!!

Denna kod slumpar från en mapp:

```
	<%				
					Set FSO  = Server.CreateObject("Scripting.FileSystemObject")
					Set Mapp = FSO.GetFolder(Server.MapPath("bilder"))
					
					
						If Mapp.Files.Count = 0 Then
							Response.Write "Inga bilder inlagda än!"
						Else
							For Each File In Mapp.Files
							If right( File.Name, 3 ) = "jpg" then
								strImage = strImage & File.Name &";"
								end if
							Next
							arrImages = Split(strImage, ";")
						End If
					
					
						
						If IsArray(arrImages) Then
												randomize
							rndNumber = Int(Rnd * UBound(arrImages))
							Response.Write "<a href=""default.asp?page=2""><img src=""bilder/"& arrImages(rndNumber) &"""  width=""680"" height=""510""></a>"
							
						End If
						
			%>
```

Men jag vill att  den ska slumpa även från dess undermappar...
Hur gör man det???
Har försökt men får inte rätt på det!

Mvh Martin!

Permalänk: https://www.webforum.nu/p/129373

## #2 — Jesper T, 2005-06-03T12:58Z

En rekursiv funktion

```
Function GetSubFolders(pfolder)
    Dim sFolders, fldr, file, MyPath

    For Each fldr In pfolder.SubFolders
        sFolders = sFolders & GetSubFolders(fldr)
    Next
    
    For Each file In pfolder.Files
		MyPath = Right(file.path, len(file.path) - len(rootname))
       	If Right(file.Name, 3) = "jpg" Then sFolders = sFolders & MyPath & file.name & ";"
    Next
	
    Set img = Nothing : Set fldr = Nothing
    GetSubFolders = sFolders
End function

Dim rootname, arrImages 
rootname =  Server.MapPath("bilder")
Set FSO  = Server.CreateObject("Scripting.FileSystemObject")
Set Mapp = FSO.GetFolder(rootname)

arrImages = Split(GetSubFolders(Mapp), ";")

Set Mapp = nothing : Set FSO = nothing

If IsArray(arrImages) Then
	randomize
	rndNumber = Int(Rnd * UBound(arrImages))
	Response.Write "<a href=""default.asp?page=2""><img src=""bilder/"& arrImages(rndNumber) &"""  width=""680"" height=""510""></a>"
End If
```

Permalänk: https://www.webforum.nu/p/1623554

## #3 — Jesper T, 2005-06-03T13:05Z

Hittas inga bilder kan du göra det i slutet i stället.

```
If IsArray(arrImages) Then
    '...
Else
    Response.write "Ingen Bild!"
End if
```

Permalänk: https://www.webforum.nu/p/1623559

## #4 — paddan, 2005-06-03T13:07Z

Funkar nästan bra---
Nu skriver den ut filnamnet dubbelt....
Så här:

<http://homepage.te.hik.se/student/ms22ja/skold/bilder//Kenso/Kenso_pa_bryggan.jpgKenso_pa_bryggan>

Varför gör den det??

Permalänk: https://www.webforum.nu/p/1623561

## #5 — paddan, 2005-06-03T13:10Z

Man såg inte riktigt länken:
homepage.te.hik.se/student/ms22ja/skold/bilder//Kenso/Kenso_pa_bryggan.jpgKenso_pa_bryggan

Härär den utan <http://>

Permalänk: https://www.webforum.nu/p/1623564

## #6 — Jesper T, 2005-06-03T13:15Z

Byt ut till

```
If Right(file.Name, 3) = "jpg" Then sFolders = sFolders & MyPath & ";"
```

Permalänk: https://www.webforum.nu/p/1623568

## #7 — paddan, 2005-06-03T13:36Z

Tack så hemst mycket...
Hade aldrig löst det utan din hjälp---!

Mvh Martin

Permalänk: https://www.webforum.nu/p/1623574

## #8 — Jesper T, 2005-06-03T14:23Z

En Class?

```
Class getRndImg
	Private root, FSO, Mapp

	Public Property Let rootname(letRoot) 'As String
		root = letRoot
	End Property
	
	Private Property Get getrootname()
		getrootname = root
	End Property
	
	Private Sub startFSO()
		Dim FSO
		root =  Server.MapPath(getrootname)
		Set FSO  = Server.CreateObject("Scripting.FileSystemObject")
		Set Mapp = FSO.GetFolder(root)
	End Sub	
	
	Private Function GetSubFolders(pfolder) 'As String
		Dim sFolders, fldr, file, MyPath
		
		For Each fldr In pfolder.SubFolders
			sFolders = sFolders & GetSubFolders(fldr)
		Next
		
		For Each file In pfolder.Files
			MyPath = Right(file.path, len(file.path) - len(root))
			If Right(file.Name, 3) = "jpg" Then sFolders = sFolders & MyPath & ";"
		Next
		
		Set file = Nothing : Set fldr = Nothing
		GetSubFolders = sFolders
	End function
	
	Public Function image() 'As String
		Dim arrImages, rndNumber
		startFSO
		arrImages = Split(GetSubFolders(Mapp), ";")
		Set Mapp = nothing : Set FSO = nothing
			If IsArray(arrImages) Then
				randomize
				rndNumber = Int(Rnd * UBound(arrImages))
				image = arrImages(rndNumber)
			Else
				image = "ingen_bild.jpg"
			End if
	End Function
	
End Class

Dim i, img
Set i = New getRndImg
i.rootname = "bilder"
img = i.image
Set i = Nothing
Response.Write "<a href=""default.asp?page=2""><img src=""bilder/"& img &"""  width=""680"" height=""510""></a>"
```

Permalänk: https://www.webforum.nu/p/1623604

## #9 — Asa, 2005-06-23T23:26Z

Hur får man fram mappens namn i Jesper´s funktion?

Permalänk: https://www.webforum.nu/p/1636682

## #10 — Asa, 2005-07-04T22:49Z

Hallå? Nån som kan min föregående fråga?

Permalänk: https://www.webforum.nu/p/1639659

## #11 — J.N., 2005-07-05T08:59Z

HEJ!

En snabb titt säger mig att det finns en variabel som heter pfolder, prova den.
Annars är det väl endast att skriva ut de varibler man tror, och se vad de innehåller på olika ställen.

Permalänk: https://www.webforum.nu/p/1639703

---

Tråden på webben: https://www.webforum.nu/amne/asp/129373-slumpa-bild-även-från-undermappar
