Link auf lokale Datei

Irgendwelche Probleme mit XAMPP für Windows? Dann ist hier genau der richtige Ort um nachzufragen.

Link auf lokale Datei

Postby chris47803 » 27. September 2020 14:01

Hallo,

ich bin mir nicht sicher, ob es an Xampp liegt oder generell nicht funktioniert.

Ich möchte einen Ordner auslesen, die Daten darin verlinken und downloaden können.
Auslesen und verlinken und Download geht wenn die Datei im Ordner/Unterordner von htdocs liegt.

Wenn ich das Script so umschreibe das die Datei auf einer anderen Festplatte liegt,
erhalte ich auch eine Liste mit den Dateien die auch verlinkt sind, aber sie lassen sich nicht downloaden.
Dann erhalte ich beim Klick auf die Datei die Meldung: You don't have permission to access this resource. 403 Forbidden.

Hier noch mein Script
Code: Select all
<?php
// Verzeichnis angeben
$verzeichnis = openDir("../download");
// Verzeichnis lesen
while ($file = readDir($verzeichnis)) {
 // Höhere Verzeichnisse nicht anzeigen!
 if ($file != "." && $file != "..") {
 // Link erstellen
  echo "<a href=\"/download/$file\">$file</a><br>\n";
 }
}
 // Verzeichnis schließen
closeDir($verzeichnis);
?>
chris47803
 
Posts: 18
Joined: 25. March 2006 19:08

Re: Link auf lokale Datei

Postby Altrea » 27. September 2020 14:09

Hallo,

Da musst du nochmal in dich gehen und dein Problem viel genauer beschreiben.
Vorallem folgende Punkte:
- Wie änderst du deinen Code um Dateien auf der anderen Festplatte zu verlinken
- Wie sieht die URL für die DOwnloads auf der anderen Festplatte aus
- Welche Konfigurationsänderungen in Apache hast du vorgenommen, um Dateien auf der anderen Festplatte zu verlinken

Am besten in einem solchen Detailgrad, dass man sich das Szenario selbst lokal aufbauen kann.
We don't provide any support via personal channels like PM, email, Skype, TeamViewer!

It's like porn for programmers 8)
User avatar
Altrea
AF Moderator
 
Posts: 11935
Joined: 17. August 2009 13:05
XAMPP version: several
Operating System: Windows 11 Pro x64

Re: Link auf lokale Datei

Postby chris47803 » 27. September 2020 14:41

Hier der geänderte Code
Code: Select all
<?php
// Verzeichnis angeben
$verzeichnis = openDir("d:../filme");
// Verzeichnis lesen
while ($file = readDir($verzeichnis)) {
 // Höhere Verzeichnisse nicht anzeigen!
 if ($file != "." && $file != "..") {
 // Link erstellen
  echo "<a href=\"/filme/$file\">$file</a><br>\n";
 }
}
 // Verzeichnis schließen
closeDir($verzeichnis);
?>


Das Script liegt in htdocs/download auf c:\
Der Ordner Filme liegt hier: d:\filme

Konfigurationsänderungen in Apache habe ich kein vorgenommen
chris47803
 
Posts: 18
Joined: 25. March 2006 19:08

Re: Link auf lokale Datei

Postby chris47803 » 27. September 2020 15:00

Sorry.
Ich hatte etwas vergessen.
Hier das aktuelle Script
Code: Select all
<?php
// Verzeichnis angeben
$verzeichnis = openDir("d:../filme");
// Verzeichnis lesen
while ($file = readDir($verzeichnis)) {
 // Höhere Verzeichnisse nicht anzeigen!
 if ($file != "." && $file != "..") {
 // Link erstellen
  echo "<a href=..\"d:/filme/$file\">$file</a><br>\n";
 }
}
 // Verzeichnis schließen
closeDir($verzeichnis);
?>
chris47803
 
Posts: 18
Joined: 25. March 2006 19:08

Re: Link auf lokale Datei

Postby Altrea » 27. September 2020 16:06

d:../filme ist ein ungültiger Pfad.
../ bedeutet "gehe eine ebene höher. Und nun überlege mal, was das bei deinem Pfad bedeutet!?
Noch dazu ist der Laufwerkbezeichner nicht durch einen Slash abgeschlossen

Dann überlege mal, was es für den Browser bedeutet, eine Anfrage auf eine lokale Datei abzusetzen.
Das ist ein fürs Internet völlig fremdes Konstrukt und aus Sicherheitsgründen nicht so ohne weiteres möglich.
Es gäbe bei manchen Browsern zwar die Möglichkeit, eine lokale Datei über das file:// Protokoll abzurufen, das ist aber nicht konsistent bei allen Browsern gleich möglich.

Ich würde das an deiner Stelle über den Apache machen lassen, zum Beispiel einen Alias für das Laufwerk anlegen, Zugriffsregeln definieren und das Index anzeigen von Apache erledigen lassen.

Ungefähr so:

In der httpd.conf ergänzt du folgende Zeilen:
Alias /filme D:/filme
<Directory "D:/filme">
Options Indexes
AllowOverride All
Require all granted
</Directory>

Dann kannst du über den URL http://localhost/filme/ das Verzeichnis Index anzeigen.
We don't provide any support via personal channels like PM, email, Skype, TeamViewer!

It's like porn for programmers 8)
User avatar
Altrea
AF Moderator
 
Posts: 11935
Joined: 17. August 2009 13:05
XAMPP version: several
Operating System: Windows 11 Pro x64

Re: Link auf lokale Datei

Postby chris47803 » 27. September 2020 16:42

Vielen Dank das du mir überhault antwortest.
Ich habe wahrscheinlich zu viele Baustellen gleichzeitig.

In der httpd.conf ergänzt du folgende Zeilen:
Alias /filme D:/filme
<Directory "D:/filme">
Options Indexes
AllowOverride All
Require all granted
</Directory>


Damit funktioniert es.
Ich habe htdocs zusätzlich eingetragen, damit auch die Websites laufen die dort liegen.
chris47803
 
Posts: 18
Joined: 25. March 2006 19:08


Return to XAMPP für Windows

Who is online

Users browsing this forum: No registered users and 66 guests