Avatar billede therealdreamer81 Nybegynder
31. juli 2004 - 12:22 Der er 7 kommentarer og
1 løsning

slette en fil

Hejsa, der ligger nogle filer på mit webhotel som jeg gerne vil have slettet. Jeg har FTP adgang, men jeg kan ikke få lov til at slette dem, dette skyldes at filerne hedder noget i retning af
pictureoh\n\b.jpg

jeg vil gerne slette dem med php.
jeg har prøvet unlink("pictureoh\n\b.jpg");

men så skriver den
Warning: unlink(pictureoh\lol\bpl.jpg): No such file or directory in /usr/home/web/web30955/t.php on line 3

nogen som har en ide til hvordan man klarer denne???
Avatar billede terrak Nybegynder
31. juli 2004 - 12:35 #1
\ er et ugyldigt tegn i et filnavn, så jeg tror ikke der er meget du kan gøre ved det, da PHP tolker det som om den skal slette en fil, som ligger i en undermappe.
Avatar billede erikjacobsen Ekspert
31. juli 2004 - 14:01 #2
Hvis den ligger i de undermapper skal du vel bare unlink("pictureoh/n/b.jpg");
Avatar billede coderdk Praktikant
31. juli 2004 - 14:14 #3
Har du prøvet unlink("pictureoh\\n\\b.jpg"); ?
Avatar billede therealdreamer81 Nybegynder
31. juli 2004 - 18:00 #4
damn, der er vidst en som har styr på tingene coderdk.... troede sgu det var et sværrer spørgsmål, men det hjalp. thanks..
Avatar billede therealdreamer81 Nybegynder
31. juli 2004 - 18:02 #5
men øhm, hvordan giver jeg dig pointene?
Avatar billede erikjacobsen Ekspert
31. juli 2004 - 18:03 #6
Ingen point til mig, tak, jeg samler ikke på dem.
Avatar billede coderdk Praktikant
31. juli 2004 - 22:27 #7
Værsågod :)
Avatar billede Slettet bruger
04. august 2004 - 01:03 #8
Bare for sjov kommer her lidt forklaring på hvorfor coderdks forslag virkede:

Hvilke tegn der er gyldige og ugyldige kommer an på det underliggende filsystem. På en maskine, der kører et Unix-lignende system er der normalt kun et eneste tegn, som er direkte ugyldigt i filnavne, nemlig \0, som bare er en byte med værdien 0. Selve filsystemet er komplet ligeglad med hvilke andre tegn, der bruges, men når der kommer en \0 er navnet slut.

Der er til gengæld en masse andre tegn, som kan være lidt bøvlede at have med at gøre. Det er tegn, som systemet bruger til specielle ting, eller som ligger uden for 7bit ASCII.

Det første problem (som er det, spørgsmålet her handlede om) handler om at skjule de tegn, som systemet ellers ville fortolke, så de ikke blev regnet som en del af filnavnet. Dette gøres ved at sætte en \ foran. På denne måde kan man bruge mange tegn, som normalt ellers ikke kan benyttes i filnavne. (Forresten er det / og ikke \, der er mappe-adskilletegn på en Unix-maskine, men det kan også bruges i et filnavn på samme måde.)

Det andet problem handler om uamerikanske bogstaver som f.eks. æøå. Som sagt er et filnavn bare en flok tegn - eller rettere en serie af bytes. Filsystemet ved egentlig slet ikke, hvilke tegn disse bytes repræsenterer. Så længe alle programmer bruger samme tegnsæt (f.eks. utf-8), er der ingen problemer. Alle programmer er enige om at de to bytes 0xC3 0xA6 tilsammen er et æ, men hvis et program pludselig forventer at filnavne er i iso-8859-1, så står 0xC3 0xA6 for 2 andre tegn, og filnavnet ser underligt ud.
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
Vi tilbyder markedets bedste kurser inden for webudvikling

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