Avatar billede theh Nybegynder
15. december 2006 - 12:50 Der er 3 kommentarer

Funktion til sletning af filer på serveren

Hej eksperter

Jeg har en hjemmeside der bl.a. indeholder et galleri med billeder. Brugerne kan uploade og slette billeder som de har lyst. Jeg har nu opdaget at slettefunktionen periodevis har været i stykker, hvilket har medført, at nogle billedfiler (jpg) er blevet liggende på serveren, mens de tilhørende records i SQL Serveren er slettet.

Spørgsmålet er nu, om det er muligt at lave en funktion der finder og sletter de jpg-filer på serveren, der vel og mærke IKKE findes beskrevet i tabellen i databasen?
Avatar billede nidyahou Praktikant
15. december 2006 - 15:06 #1
Du kan måske enten lave en admin knap hvor du sætter funktionen igang eller sætter den ind i en admin global.asa

Du kan jo prøve at lave en filelist med FSO og så sætte sætte værdierne ind i et array, som du så gennemgår med dine records, og hvis de ikke ligner (<> "") så skal den slette dem. Lyder det helt umuligt?
Avatar billede loukas Mester
15. december 2006 - 18:20 #2
Du kan prøve med den her, jeg har selv brugt den til det samme.

<%
Set objConn = Server.CreateObject("ADODB.Connection")
objConn.Open strconnect



taller = 0
strBilledMappe = "C:/inetpub/bla-bla/mappe_med_billeder/"
dirtowalk = "../mappe_med_billeder/"

Set fs = CreateObject("Scripting.FileSystemObject")
Set f = fs.GetFolder(server.mappath(dirtowalk))
Set fc = f.Files
For Each whatever in fc
if taller = 0 then
Response.Write "<br>"
end if
%>
    <TD>
        <% = dirtowalk %><% = whatever.name %><br>
        <%
       
            strSQL = "SELECT * FROM DinTabel WHERE billedekolonne = '"&whatever.name&"'"
            set rs = objConn.Execute(strSQL)
           
            if not whatever.name = "navn_paa_Fil_Der_ikke_Skal_slettes.htm" then
                           
           
                if rs.eof or rs.bof then
                        Response.Write "Der kunne ikke findes nogen records med dette billede/fil -navn!<br>"
                       
                                    Set fs = CreateObject("Scripting.FileSystemObject")
                                        If (fs.FileExists (""&strBilledMappe&""&whatever.name&"") = True) Then
                                            fs.DeleteFile (""&strBilledMappe&""&whatever.name&"")
                                            Response.Write "Filen er slettet"
                                        End if
                                    Set fs = nothing
                else
                    do
                        Response.write "Billede:" & rs("billedekolonne")
                    rs.movenext
                    loop while not rs.eof
   
                end if
               
               
            end if



Next



objConn.Close
set objConn = nothing

%>
Avatar billede theh Nybegynder
05. februar 2007 - 17:53 #3
BEKLAGER meget det sene svar! Kom med et svar loukas og få dine points.
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