Zugriff mit dem Browser auf lokale Dateien nur mit IE möglich?
lolek
- html
0 Dieter Raber0 lolek0 Candid Dauth
0 e7
Ich lade mittels HTML Formular Feld <input="file"... eine Datei von meiner Festplatte auf meinen Webserver. Bevor ich die Datei allerdings uploade, möchte ich diese im Browser angezeigen.
Dazu lese ich vor dem Upload den Pfad des Bildes aus dem Input Feld aus und zeige diesen dann an.
z.b. so:
<img src"C:\full.jpg">
Dieser Zugriff vom Browser aus funktioniert allerdings nur mit dem Internet Explorer. Mit anderen Browsern (Mozilla, Firefox,...) funktioniert das leider nicht. Weiß jemand woran das liegt?
Vielen Dank
Hallo lolek,
Oeffne mal ein beliebiges Bild von deiner Festplatte im Browser. Die Adresse wird dann sein file:///C:/... Du musst also alle Slashes rumdrehen und file:/// voranstellen. Dabei hilft Dir Javascript mit der Funktion replace().
Gruß,
Dieter
Hallo Dieter,
das habe ich auch schon festgestellt, aber leider werden auch Bilder mit dieser schreibweise z.B. im Mozilla trotzdem nicht angzeigt.
Kann es sein, dass es aus Sicherheitsgründen von diesen Browsern nicht angezeigt wird?
Hallo lolek,
Oeffne mal ein beliebiges Bild von deiner Festplatte im Browser. Die Adresse wird dann sein file:///C:/... Du musst also alle Slashes rumdrehen und file:/// voranstellen. Dabei hilft Dir Javascript mit der Funktion replace().
Gruß,
Dieter
Hallo lolek,
Ich habe auf meinem Laufwerk C: ein Bild namens 126_2667_r1.jpg liegen. Wenn ich in die Adresszeile von Firefox/Opera/IE
file:///C:/126_2667_r1.jpg eintippe, sehe ich das Bild. Wenn das bei dir auch funktioniert, liegt es eher an der Art, wie du die Adresse des Bildes vom Filefeld zum img-tag uebertraegst.
Ich habe hier mal ein Testscenario gebastelt:
<input type="file" onchange="document.getElementById('bild').src='file:///' + this.value.replace(/\/g, '/')">
<img id="bild" src="">
Schau mal, ob das macht, was du willst
Gruß,
Dieter
Hallo ihr da draußen,
Oeffne mal ein beliebiges Bild von deiner Festplatte im Browser. Die Adresse wird dann sein file:///C:/... Du musst also alle Slashes rumdrehen und file:/// voranstellen.
Afaik dürfen es nur zwei Slashes sein. Die Syntax lautet file:// + Adresse, das heißt, dass es unter Linux zwar drei Slashes wären – da die Adresse ja mit einem Slash beginnt – unter Windows dürften es aber nur zwei sein.
Auch wenn das den meisten Browsern so ziemlich egal ist. Wenn man sich das so anschaut – der Internet Explorer schreibt seine Adressen als file:///C:\bla, Geckos verwenden afaik auch drei Slashes, während der Konqueror/KDE als Adresse zum Beispiel file:/home/bla, also nur einen Slash benutzt. Netscape 4 hatte solch eine ganz komische Syntax, wenn ich mich recht erinnere irgendsowas wie file://C|/bla oder so.
Grüße von hier drinnen, aus Biberach an der Riss,
Candid Dauth (Dogfish)
Hallo Candid,
Auch wenn das den meisten Browsern so ziemlich egal ist. Wenn man sich das so anschaut – der Internet Explorer schreibt seine Adressen als file:///C:\bla, Geckos verwenden afaik auch drei Slashes, während der Konqueror/KDE als Adresse zum Beispiel file:/home/bla, also nur einen Slash benutzt. Netscape 4 hatte solch eine ganz komische Syntax, wenn ich mich recht erinnere irgendsowas wie file://C|/bla oder so.
Da ist was dran, an dem was du sagst. Ich hab das nur flott in meinen Browsern ausprobiert und die waren alle mit file:/// zufrieden. Da nach meinem Verstaendnis der OP das nur lokal machen wollte (macht remote ja auch keinen Sinn), sollte das jedenfalls hinhauen. Falls nicht, kann er ja gerne eine Browserweiche bauen, die den RegExp entsprechend anpasst.
Gruß,
Dieter
Hi,
das sieht mir so nach dem Stil aus ««Ihr Rechner ist unsicher, hier der Inhalt ihrer Festplatte <iframe src="file:///c:/">...»» So lange wird das selbst beim IE nicht mehr gehen, eigentlich sollte ein Browser streng zwischen Internet und lokalen Rechner unterscheiden... Hoffe ich zumindest ;)
E7