Avatar billede zamiel Nybegynder
04. august 2005 - 16:17 Der er 8 kommentarer og
1 løsning

Problem med link til filer

Jeg har lavet en upload funktion i php som jeg har problemer med. Problemet består i at jeg ikke kan linke til filer med æ,ø,å i deres navne. Når jeg laver en oversigt over filerne på serveren får man af vide at filen ikke findes hvis man trykker på den/dem.


Odover det indlysende svar at omdøbe filerne inden man uploader dem, er der så nogen der har foreslag til hvordan man kommer unden om problemet? Jeg går stærkt ud fra at mine browsere ikke kan genkende de bogstaver, så hvordan klarer man den kodemæssigt?

Siden kan findes her.. http://www.timmi.dk/p901_uploader.php
Avatar billede myplacedk Nybegynder
04. august 2005 - 16:29 #1
Husk at "urlencode":
echo '<a href="/mappe/'.urlencode($filnavn).'">'.htmlspecialchars($filnavn).'</a>';
Avatar billede zamiel Nybegynder
04. august 2005 - 20:12 #2
Det virker.. men æ,ø og å bliver lavet om til en række tegn eks. kommer føl.txt til at hedde f%F8l.txt når man downloader den.
Avatar billede myplacedk Nybegynder
04. august 2005 - 22:16 #3
> men æ,ø og å bliver lavet om til en række tegn
Ja, de bogstaver må ikke være i en URL.

> eks. kommer føl.txt til at hedde f%F8l.txt når man downloader den.
Når filen bliver gemt skulle navnet gerne være korrekt, ellers må det være en fejl i den software du downloader med.
Du kan evt. komme med en URL hvor du viser problemet, så kan jeg se om der stadig er et problem fra din side.
Avatar billede zamiel Nybegynder
05. august 2005 - 16:50 #4
Du kan selv prøve.. siden findes her http://www.timmi.dk/p901_uploader.php

Koden til at lave listen af file navne ser således ud. Nu kan jeg finde filerne i modsætning til før. Men fil navnene bliver æændret som jeg beskrev i mit tidligere indlæg

$filelist .= "<a href='$upload_dir".urlencode($file)."'>".htmlspecialchars($file)."</a>";
       
$filelist .= " <a href='?del=$upload_dir$file' title='delete'>x</a>";
         
$filelist .= "<sub><small><small><font color=grey>  ".date("d-m H:i", filemtime($upload_dir.$file))."</font></small></small></sub>";

$filelist .="<br>";
Avatar billede myplacedk Nybegynder
05. august 2005 - 17:02 #5
Du får nok samme problem med dit slette-link ;-)
Dog lige en enkelt finte: Når det står efter et spørgsmålstegn (altså som en get-parameter), bør du bruge rawurlencode() i stedet for urlencode().

Og så skal du passe MEGET på, at du ikke lige har givet *alle* adgang til at slette alt hvad de har lyst til!! (Også uden for din upload-mappe)
Avatar billede zamiel Nybegynder
05. august 2005 - 17:09 #6
hvordan skulle folk kunne slette ting som ligger udenfor min upload mappe?
Avatar billede yHec Novice
05. august 2005 - 23:15 #7
Havde samme problem... Fixede det med denne stump kode:

$dk=array("æ", "Æ", "ø", "Ø", "å", "Å", " ");
$net=array("ae", "AE", "oe", "OE", "aa", "AA", "_");
$file=strtolower(str_replace($dk, $net, $_FILES['img']['name']));

move_uploaded_file($_FILES['img']['tmp_name'], $et_mappe_navn.$file);


Den skifter simpelthen de danske tegn ud med noget "nettet kan li'" inden upload.

Virker perfekt.

Det er godtnok en omdåb, som du frabeder, men det sker i koden, uden din indblanding.

/y
Avatar billede myplacedk Nybegynder
06. august 2005 - 08:43 #8
zamiel: Man kan jo bare skrive den sti man har lyst til i urlen. Hvis ikke du har gjort noget for at undgå det, kan man dermed angive en hvilken som helst fil.

y: Hvad så med alle de andre special-tegn? Filnavne og mappenavne må kun bestå af tegnene a-zA-Z0-9$-_.+!*'(),;:@&= og så selvfølgelig escape-sekvenser, som alt andet skal encodes i. (Det er defineret i RFC 1738, se sektion 5.)
Plus du ændrer filnavnene, så det kan da ikke være perfekt.
Avatar billede yHec Novice
06. august 2005 - 14:23 #9
Det virker perfekt for mig, idet det kun er mig selv der uploader - og det kan jo smuttte med de danske tegn.

Jeg bruger det til at gemme filnavne i en database - hvor det ændrede navn jo så selvfølgelig så figurerer. Dvs jeg aldrig ser filnavnene igen.

/y
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