urlencode
Hallo!
Ich hab ein Problem mit kodierten Dateinamen, und ich komme nicht
weiter...
Also, es ist wie folgt:
1) Der Benutzer wählt eine Datei zum Upload aus, z.B. Österreich.txt
2) Der Dateiname wird mit urlencode() zu %D6sterreich.txt geändert,
dann wird die Datei mit diesem Namen gespeichert.
3) Auf der Webseite wird ein Link zu dieser Datei erstellt:
http://localhost/xxx/doc/6_uebergreifende_infos/%D6sterreich .txt
Klicke ich auf diesen Link, bekomme ich folgende Meldung:
403 Forbidden
You don't have permission to access
/bmsk/doc/6_uebergreifende_infos/Österreich.txt on this server.
In der
httpd.conf steht:
<Directory "c:/htdocs/xxx">
Options Indexes FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all
</Directory>
Woran könnte es liegen? Wenn die Datei Oesterreich.txt heißt, dann
funktioniert es.
LG,
Christian
Re: urlencode
Christian Aigner schrieb:
> 2) Der Dateiname wird mit urlencode() zu %D6sterreich.txt geändert,
> dann wird die Datei mit diesem Namen gespeichert.
Was bedeutet "wird mit diesem Namen gespeichert"? Im Dateisystem wird die
Datei ja wohl mit dem Namen "Österreich.txt" gespeichert und nicht mit
"%D6sterreich.txt". Nur der Link im HTML wird ja dann entsprechend encoded.
> <Directory "c:/htdocs/xxx">
Auf einem Windows-Server musst du es so machen für die Link-URI:
| $datei = rawurlencode(utf8_encode('Österreich.txt'));
Ergibt dann "%C3%96sterreich.txt".
Gruß
Carsten
Re: urlencode
Christian Aigner schrieb:
> 2) Der Dateiname wird mit urlencode() zu %D6sterreich.txt geändert,
> dann wird die Datei mit diesem Namen gespeichert.
Das ist falsch! Du möchtest urlencode() nur benutzen, um den Dateinamen
für die Übertragung per URL zu bearbeiten.
Gruß,
Habbo
Re: urlencode
Am Thu, 20 Sep 2007 14:45:17 +0200, schrieb "Carsten Wiedmann"
<carsten_sttgt [at] gmx.de>:
> Christian Aigner schrieb:
>
> > 2) Der Dateiname wird mit urlencode() zu %D6sterreich.txt geändert,
> > dann wird die Datei mit diesem Namen gespeichert.
>
> Was bedeutet "wird mit diesem Namen gespeichert"? Im Dateisystem wird die
> Datei ja wohl mit dem Namen "Österreich.txt" gespeichert und nicht mit
> "%D6sterreich.txt". Nur der Link im HTML wird ja dann entsprechend encoded.
Ja, die Datei wird als "Österreich.txt" gespeichert.
Das mit dem vorher kodieren war ein Versuch, der aber eh nichts
gebracht hat.
> > <Directory "c:/htdocs/xxx">
>
> Auf einem Windows-Server musst du es so machen für die Link-URI:
> | $datei = rawurlencode(utf8_encode('Österreich.txt'));
>
> Ergibt dann "%C3%96sterreich.txt".
>
> Gruß
> Carsten
>
Das Problem tritt unter Windows nicht auf. Erst, als ich das ganze auf
einen Linux-Server hochgeladen habe, tritt das Problem auf.
Also nochmal: Ich speichere die Datei als "Österreich.txt" und in der
Datenbank wird ein Link auf diese Datei eingetragen:
"doc/Österreich.txt"
Im Moment schaut's bei mir so aus:
(ich laß jetzt alles unwichtige weg..., auch das prepared statement)
$sql = 'SELECT titel, pfad FROM dateien WHERE id=123';
....
$row = $result->fetchRow();
$titel = $row['titel'];
$pfad = $row['pfad'];
echo '$titel';
Link: http://server/doc/Österreich.txt
Fehler: Datei wurde nicht gefunden (obwohl die Datei im angegebenen
Verzeichnis liegt und auch genau so heißt)
Wenn ich nun einen Link auf einer Webseite einbauen möchte, die auf
diese Datei verweist, wie muß ich das richtig machen?
LG,
Christian
Re: urlencode
Christian Aigner schrieb:
> Das Problem tritt unter Windows nicht auf. Erst, als ich das ganze auf
> einen Linux-Server hochgeladen habe, tritt das Problem auf.
>
> Also nochmal: Ich speichere die Datei als "=D6sterreich.txt" und in der=
> Datenbank wird ein Link auf diese Datei eingetragen:
> "doc/=D6sterreich.txt"
Das ist mit an Sicherheit grenzender Wahrscheinlichkeit ein
Kodierungsproblem. Dieses wird sich u.U. von Maschine zu Maschine
unterscheiden.
Herzlichen Glückwunsch, du hast den Grund entdeckt, warum man sich bei
Dateinamen auf eine Teilmenge der 7Bit-ASCII-Zeichen beschränkt.
MfG
Niels
--
| http://www.kolleg.de =B7 Das Portal der Kollegs in Deutschland |
| http://www.bsds.de =B7 BSDS Braczek Software- und DatenSysteme |
| Webdesign =B7 Webhosting =B7 e-Commerce =B7 Joomla! Content Management =
|
------------------------------------------------------------ ------
Re: urlencode
Am Thu, 20 Sep 2007 23:42:29 +0200, schrieb Niels Braczek
<nbraczek [at] freenet.de>:
> Christian Aigner schrieb:
>
> > Das Problem tritt unter Windows nicht auf. Erst, als ich das ganze auf
> > einen Linux-Server hochgeladen habe, tritt das Problem auf.
> >
> > Also nochmal: Ich speichere die Datei als "Österreich.txt" und in der
> > Datenbank wird ein Link auf diese Datei eingetragen:
> > "doc/Österreich.txt"
>
> Das ist mit an Sicherheit grenzender Wahrscheinlichkeit ein
> Kodierungsproblem. Dieses wird sich u.U. von Maschine zu Maschine
> unterscheiden.
>
> Herzlichen Glückwunsch, du hast den Grund entdeckt, warum man sich bei
> Dateinamen auf eine Teilmenge der 7Bit-ASCII-Zeichen beschränkt.
>
> MfG
> Niels
Ich beschränke mich privat eh grundsätzlich auf 7Bit-ASCII, nur die
Leute, die das (von mir programmierte) System benutzen, sehen nicht
ein, warum sie auf Umlaute verzichten sollen.
Grundsätzlich würde ich ja einfach alle Umlaute gegen entsprechende
Zeichen per str_replace() austauschen.
Gibt es einen Weg, wie man doch Umlaute in Dateinamen verwenden kann
und der Download via http-Link trotzdem funktioniert?
mfg,
Christian
Re: urlencode
Christian Aigner schrieb:
> Gibt es einen Weg, wie man doch Umlaute in Dateinamen verwenden kann
> und der Download via http-Link trotzdem funktioniert?
Ja, so wie Carsten es dir bereits erklärt hat.
Gruß,
Habbo
Re: urlencode
Christian Aigner schrieb:
> Gibt es einen Weg, wie man doch Umlaute in Dateinamen verwenden kann
> und der Download via http-Link trotzdem funktioniert?
Nicht, wenn du systemunabhängig bleiben willst. Ist das System fest
vorgegeben, musst du den Dateinamen vor der Verwendung in die Kodierung
des Zielsystems übersetzen.
MfG
Niels
--
| http://www.kolleg.de =B7 Das Portal der Kollegs in Deutschland |
| http://www.bsds.de =B7 BSDS Braczek Software- und DatenSysteme |
| Webdesign =B7 Webhosting =B7 e-Commerce =B7 Joomla! Content Management =
|
------------------------------------------------------------ ------