Hej solis! ;)
Jag gissar innan jag testar din kod; skall inte fysiska sökvägar vara med \ och inte / ?
8 svar · 367 visningar · startad av solbulle
Vad gör jag för fel?
Sub Makefolder(foldername)
set fso = server.createobject("scripting.filesystemobject")
foldername = server.mappath("upload") & "/" & foldername & "/"
IF Not fso.FolderExists(foldername) then
fso.CreateFolder foldername
End If
set fso = nothing
End Sub
Kallar på den med
Call Makefolder(username) 'Fungerar
Call Makefolder(username & "/" & section) 'Fungerar inte!
Hur attans skriver jag subben / kallar på den för att skapa en mapp i en mapp?
username samt section kommer från ett formulär men har även testat att hårdkoda, fungerar ej.
Felet jag får är:
Error Type:
Microsoft VBScript runtime (0x800A0034)
Bad file name or number
Hej solis! ;)
Jag gissar innan jag testar din kod; skall inte fysiska sökvägar vara med \ och inte / ?
Aha! :D
Ditt fel uppstår när mappen som heter som variabeln 'username' inte finns. Anledningen är att FSO inte klarar att skapa två mappar på det sättet samtidigt.
Alltså, för att lägga till en fil i mappen 'kalle' som heter 'tjosan', måste mappen 'kalle' finnas, annars får du det där felet. :)
Ok, det verkar logiskt, tips på hur jag skriver om funktionen för att typ skapa först en mapp sen den andra?
Blir hyfsat tokig!
Denna kod:
<%
username = "bosse"
section = "martin"
Call Makefolder(username)
Call Makefolder(username & "\" & section)
Sub Makefolder(foldername)
set fso = server.createobject("scripting.filesystemobject")
foldername = server.mappath("upload") & "\" & foldername & "\"
IF Not fso.FolderExists(foldername) then
fso.CreateFolder foldername
End If
set fso = nothing
End Sub
%>
Körd rakt av ger den felet som står ovan:
Error Type:
Microsoft VBScript runtime (0x800A0034)
Bad file name or number
Kör jag först bara den översta "callen" samt sen efteråt den andra så fungerar det.
Det verkar som om mappen inte hinner skapas under tiden scritet körs och därför måste jag göra det i två steg...
Någon?
Det kan vara att mappen inte hinner skapas, som du säger. Windows tar ju ett par sekunder på sig att iaf. visa mappen i t.ex. utforskaren enligt vad jag vet, sen om det påverkar hur fort man kan accessa mappen, det har jag ingen aning om. :)
Jag tycker ändå att felet inte bör uppstå med tanke på att du köra en fileexists som tydligen returnerar true.
<%
username = "bosse"
section = "martin"
Call Makefolder(username & "\" & section)
Sub Makefolder(foldername)
set fso = server.createobject("scripting.filesystemobject")
sFolder = Split(foldername,"\")
sFolder = Split(foldername,"/")
For i=0 To Ubound(sFolder)
fLoc = fLoc&sFolder(i)&"/"
myF = Server.Mappath("./"&fLoc)
IF Not fso.FolderExists(myF) then
fso.CreateFolder myF
End If
response.write(myF&"<br>")
Next
set fso = nothing
End Sub
%>
---------------------------------
tycker jag funkar skitbra =)
Det där verkar fungera! :)
Om jag kallar på den såhär dock:
Call Makefolder(username & "\" & section)
Kanonfunktion det där. :)
Jag satt och funderade på något liknande, men jag hade tyvärr inte ork att skriva en egen.