09. maj 2003 - 22:15Der er
4 kommentarer og 1 løsning
sletning af bestemte filer på server
Hej Alle,
Jeg har en database som indeholder en masse filnavne på filer der ligger på en server. Der er gennem længere tid er blevet uploadet en masse filer som både bliver uploadet og registreret (filnavnet) i databasen.
Nu er det så sådan at nogle af disse filnavne er blevet slettet fra databasen igen, men selve filen er ikke blevet slettet fysisk.
Er det muligt at lave et script i ASP der går ud og ser om det der ligger i folderen matcher det der står i databasen og så sletter eventuelt overskydende filer?
Det drejer sig om et par 100 forskellige foldere der skal tjekkes igennem, men de har alle et nummer som passer med et nr i databasen.
Altså for eksempel står der i databasen:
foldernummer = 9 filnavn = sikkeetrod.jpg
Filen ligger så:
9/sikkeetrod.jpg
Samtidig ligger der også sådan en her:
9/jegerioverskud.jpg
og da den ikke står i databasen skal den slettes fysisk
Jeg ville bare nødig bruge flere dage på at tjekke det igennem manuelt hvis det nu kan gøres med et script?
Håber jeg har forklaret mig ordentligt, og håber endnu mere at det er muligt :)
I dette særtema ser vi på, hvordan cloud og AI bliver fundamentet for virksomhedernes digitale forretning, og hvordan de nye muligheder for automatisering og forretningsværdi kan udnyttes uden at miste overblik, sikkerhed og menneskelig kontrol.
Umiddelbart skal der bygges lidt sikker hed ind i det for den ikke abre sletter tilfældige filer så kan der ligge andre filer end eksvis billede filer som skal gemmen men som ikke er i databasen? Og det kunne måske være smart at lave et filter som kun tager de fil eefternavne som du ved skal fjernes eksvis jpg,jpeg,bmp,gif m.f.
Jeg har engang lavet et tilsvarne scritp som scannede en folder struktur igennem of lage filnavet ind i databasen. Så det kan tilrettes.
Er der en root folde hvor de andre foldere ligger i?
Som du kan se har jeg en folder som hedder hyttetur og i den ligger alle min billeder det er root folderen for alle mine billeder, der kan godt være under foldere i den eksvis hyttetur/mandag/001.jpg I databasen vil der ligge dette hvis et billede lå i selve hyttetur folderen: hyttetur/billedenavn.jpg Så derfor skal strRelPath være lig med "hyttetur/" hvis det bare var billedenavn.jpg så skulle strRelPath = "" strRelPath = "hyttetur/"
BEMÆRK FOR SIKKERHED: Så har jeg udkommentere den linje som sletter filen for du lige kan køre scritpet igennem og kigge på outputet om det ser fornuftigt ud. Hvis den skeriver den vil slette alle filerne så der noget galt med stierne.
Når du køre det vil det eksvis skrive dette ud: C:\Inetpub\wwwroot\eksperten\hyttetur.... Reletiv : hyttetur/ : Filnavn : hyttetur/00.jpg Findes ikke slettes! : Filnavn : hyttetur/01.jpg Findes.
Du må lige rette i Connection til databasen så den passer med din database. Ligeledes den SQL sætning som tjekker om en fil findes, som er denne:
SQL = "SELECT ID FROM billeder WHERE billedenavn = '" & relPath & file.name & "'"
For each Folder in objFolder.SubFolders lookinfolder Folder.path, relPath & Folder.name & "/" next
Set objFolder = Nothing end function
function scanFiles (foldernavn, relPath) Set objFolder = fso.getFolder( foldernavn ) Set objFiles = objFolder.Files for each file in objFiles if InStr(1,"gif,jpg,jpeg,bmp", LCase(fso.GetExtensionName(file.name))) > 0 then SQL = "SELECT ID FROM billeder WHERE billedenavn = '" & relPath & file.name & "'" Set rs = Conn.Execute (SQL) if rs.EOF then 'Filen findes ikke i DB: Response.Write " : Filnavn : " & relPath & file.name & " Findes ikke slettes! " & "<br>"
else Response.Write " : Filnavn : " & relPath & file.name & " Findes. " & "<br>" end if rs.Close end if next Set objFolder = Nothing Set objFiles = Nothing end function
det er vel filesystemsObject der skal bruges, den kan, son jeg husker det både håndtere folder og files. Så er det vel "bare" at lave en rutine der sammenligner databasens navne med de faktiske forhold og sletter de overskydende, eller simpelthen generere en ny database ud fra de faktiske forhold. Det burde ikke være så svære, men mit ASP er meget rustent
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.