Avatar billede thomas_yde Nybegynder
19. juli 2003 - 01:09 Der 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


Er der nogen der kan se en løsning til problemet.
Avatar billede thomas_yde Nybegynder
19. juli 2003 - 01:11 #1
Scriptet kan godt finde filen.
Men når scriptet prøver at slette filen, så bryder det sammen.
Avatar billede dr-data Nybegynder
19. juli 2003 - 03:24 #2
ved ikke om det er det, men mon filen er skrivebeskyttet?

prøv: fso.DeleteFile(Server.MapPath("../../Images/Items/1.JPG"),True)
Avatar billede nmh Nybegynder
19. juli 2003 - 11:18 #3
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

Hvilken server ligger web-serveren på?
Avatar billede dr-data Nybegynder
19. juli 2003 - 15:46 #4
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
Avatar billede thomas_yde Nybegynder
21. juli 2003 - 16:37 #5
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
Avatar billede thomas_yde Nybegynder
21. juli 2003 - 16:41 #6
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.
Avatar billede nmh Nybegynder
21. juli 2003 - 16:42 #7
her er det
Avatar billede Ny bruger Nybegynder

Din løsning...

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.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester