webForumDet fria alternativet

Hinna ta bort folder...?

5 svar · 212 visningar · startad av ElMaco

ElMacoMedlem sedan juni 2000161 inlägg
#1

Hejsan.

Jag har gett mig på att skapa ett filadministreringssystem men har stött på följande irriterande bugg.

Om foldern innehåller många filer hinner inte all data kopieras till den nya destinationen innan servern vill ta bort den gamla foldern. Detta skapar rättighetskonflikter och fildelningsproblem. Hur löser jag lämpligen detta? Förslag?

'---Sökväg
	path = Server.MapPath("..\accounts") & "\"
	
	'---Skapar serverobjekt
	Set FileSys = Server.CreateObject("Scripting.FileSystemObject")

	'---Kollar om filen finns.
	If FileSys.FolderExists(path & accountfolder) And Not accountfolder = new_accountfolder Then
		'---Kopierar samtliga foldrar, false = får ej skriva över
		FileSys.CopyFolder path & accountfolder, path & new_accountfolder, false
		
		'---Kollar att foldern skapats
		If FileSys.FolderExists(path & new_accountfolder) Then
			FileSys.DeleteFolder path & accountfolder
		Else
			Response.Write "<SCRIPT>alert(""Det har uppstått ett fel.\nFoldern tillhörande " & companyname & " med namnet " & accountfolder & " \nkunde inte byta namn till " & new_accountfolder & ".\nFoldernamnet är upptaget."");history.back();</SCRIPT>"
		
		all_ok = False
		End If
		
		
		
	ElseIf Not FileSys.FolderExists(path & accountfolder) Then
		Response.Write "<SCRIPT>alert(""Det har uppstått ett fel.\nFoldern tillhörande " & companyname & " med namnet " & accountfolder & " finns inte.\nDärför kunder foldern inte uppdateras."");history.back();</SCRIPT>"
	
		all_ok = False
	
	'ElseIf accountfolder = new_accountfolder Then
	'Om den uppdaterade foldern heter likadant skall inget ske.
	
	End If

------------------
To understand recursion, we must first understand recursion.

ElMacoMedlem sedan juni 2000161 inlägg
#2

object.Name [= newname]

...lär återkomma om det inte funkar. :)

------------------
To understand recursion, we must first understand recursion.

ToonsterMedlem sedan feb. 20001 590 inlägg
#3

Detta kan bli "kruxigt". Det säkraste är nog någon typ av steg för steg funktion. Genom att dela upp olika funktioner på olika scriptsidor, så kanske FSO klarar av detta.

Problemet är ju att borttagning och filkopiering sker i bakgrunden i separata prcesser.

Möjligt man kan fixa det genom sköta all kopiering först, kolla antalet filer i respektive mapp, sedan ta bort den gamla.

/T

------------------
WRITE_PORT_ULONG(devExt->Mymessage,SMART_WRITE_ACK);

VideMedlem sedan dec. 19998 577 inlägg
#4

En kanske inte så bra idé är att efter kopieringen så skapar du en loop som fortsätter tills filen är bort... men du får göra den loopen riktigt säker... :)

------------------
Vide rox = new Vide();
rox.learn("C#");

webeye.nu

emissionMedlem sedan dec. 19996 721 inlägg
#5

Din strategi tyder på att du inte litar på att MoveFolder gör det den ska, men tänk på att en flytt går mycket snabbare än en kopiering, så risken för fel är betydligt mindre.

ElMacoMedlem sedan juni 2000161 inlägg
#6

folderObject.Name [= newname] funkade som smort. Där klippte jag 30 rader kod...

sånt händer. :)

------------------
To understand recursion, we must first understand recursion.

133 ms totalt · 3 externa anrop · v20260731065814-full.30151723
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
130 ms — hämta tråd, inlägg och bilagor (db)