19. juli 2003 - 01:09Der er
5 kommentarer og 2 løsninger
Problemer med sletning af en fil
Problem: Jeg skal slette en fil fra min webserver. Det jeg prøver nu får webserveren til at "fryse" fast.
dim itemId,filnavn
itemId = Request.QueryString("itemId") OpenRS("SELECT picID FROM Item WHERE itemId="&itemId) if not Dbrs.EOF then filnavn = Dbrs("picId") Set FSO = Server.CreateObject("Scripting.FileSystemObject") If (FSO.FileExists(Server.MapPath("../../Images/Items/1.JPG")))=true Then Response.Write("Filen eksistere!") 'fso.DeleteFile(Server.MapPath("../../Images/Items/1.JPG")) Else Response.Write("Filen eksistere ikke!") End If Set FSO = Nothing 'ExecuteSQL("UPDATE Item SET picId=null where itemId="&itemId) Dbrs.movenext End if CloseRS
Jeg kan ikke rigtig få mening i din kode, men det er måske fordi det er et udpluk, og man kan ikke se her, hav der ligger bagved. OpenRS...??? Det burde da være RS.open ...... Tilsvarende CloseRS RS.Close. men OpenRS er måske en procedure? Du bruger slet ikke variablen filnavn til noget. Er det meningen, at record-settet Dbrs skal gennemløbes i sin helhed? Dbrs er måske blevet dannet tidligere? Det sker ikke i din script-del Hvis det er tilfældet skal du da have en løkke igang, og ikke en if-sætning. Den løkke skal starte med f.eks. while not Dbrs.EOF
ja nu lyder fejlmeldingen på "server, fryser ved forsøg på sletning af fil"
men ellers ja, så ser koden nu lidt underlig ud...
':: do while not = do until
dim itemId,filnavn
itemId = Request.QueryString("itemId") OpenRS("SELECT picID FROM Item WHERE itemId="&itemId) if not Dbrs.EOF then do until Dbrs.Eof filnavn = Dbrs("picId") Set FSO = Server.CreateObject("Scripting.FileSystemObject") If (FSO.FileExists(Server.MapPath("../../Images/Items/1.JPG")))=true Then Response.Write("Filen eksistere!") 'fso.DeleteFile(Server.MapPath("../../Images/Items/1.JPG")) Else Response.Write("Filen eksistere ikke!") End If Set FSO = Nothing 'ExecuteSQL("UPDATE Item SET picId=null where itemId="&itemId) Dbrs.movenext loop End if CloseRS
men for at komme ned til spm'et, så er det jo kun denne del, der skal virke:
Set FSO = Server.CreateObject("Scripting.FileSystemObject") filnavn = Server.MapPath("../../Images/Items/1.JPG") If (FSO.FileExists(filnavn))=true Then Response.Write("Filen eksistere!") fso.DeleteFile(filnavn,True) Else Response.Write("Filen eksistere ikke!") End If
det er tydeligt at se at du selv har gjort noget for at finde fejlen, idet filnavn og db-sættet ikke bruges, men ellers er klar til at blive taget i brug igen :D
Hej jeg fik det til at virke, ved at flytte til en anden server. Problemet var at det var rettighedsproblemer. Jeg flyttede scriptet fra lokal server til min webserver og så var der ikke nogen skriverettighedsproblemer.
Men Hvis i gider smide et svar så fordeler pointene.
OpenRS er en procedure. filnavn bruger jeg, jeg prøvede bare at sætte en fil ind som jeg var sikker på fandtes.
Sådan ser scriptet ud nu, hvis det har interesse: PrepareDB dim itemId,filnavn
itemId = Request.QueryString("itemId") OpenRS("SELECT picID FROM Item WHERE itemId="&itemId) if not Dbrs.EOF then filnavn = Dbrs("picId") Set FSO = Server.CreateObject("Scripting.FileSystemObject") If (FSO.FileExists(Server.MapPath("../../Images/Items/"&filnavn))) Then Response.Write("Filen eksistere!") FSO.DeleteFile(Server.MapPath("../../Images/Items/"&filnavn)) Else Response.Write("Filen eksistere ikke!") End If Set FSO = Nothing ExecuteSQL("UPDATE Item SET picId=null where itemId="&itemId) Dbrs.movenext End if CloseRS CloseDB
Det blev lidt kludret. Jeg fordeler pointene hvis i vil smide et svar. Det var vist pointen af det ovenstående. Måske skulle jeg nok slette Dbrs.movenext da den ikke bruges.
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.