lorderich
Goto Top

Aufrufen eines Image Files außerhalb des Document Roots

Hallo zusammen,

ich habe eine Upload Funktion gebaut, mit der ein User ein PDF oder Images Bild hochladen kann. Dieses Dokument verschiebe ich anschließend in einen Ordner, der außerhalb des WebRoots liegt, damit diese Dateien nicht für jeden zugänglich sind.

Nun stellt sich mir aber die Frage, wie ich genau diese Dateien innerhalb von PHP wieder anzeigbar machen kann.

Über folgenden Weg habe ich das bisher versucht:

$docname = $characters["resource"]['signedparrentdoc'];	  

foreach ($characters["resource"] as $key=>$value)  
			if(substr($docname, -4) == '.pdf'){  
			$doc = "<script>PDFObject.embed('".$PDF_Folder."prtdocs/'".$docname.", '.document');</script>";	  
				
			}
			else {$doc = "  
			<img src='".fopen($PDF_Folder."prtdocs/".$docname, "r")."'/>";}  

Wie schon zu erkennen ist, muss die Lösung auch bei mehreren Images/PDF´s auf einer Seite funktionieren.

Die Tatsache, dass ich das zwar als BASE64_Encoded einlesen kann ist zwar net, hilft allerdings wenig, wenn dafür noch ein header gesendet werden muss, da zu diesem Zeitpunkt bereits die Header Informationen ausgetauscht sind.

Was wäre aus eurer Sicht der beste Weg um das zu lösen?

Content-Key: 379614

Url: https://administrator.de/contentid/379614

Printed on: April 25, 2024 at 03:04 o'clock

Member: StefanKittel
StefanKittel Jul 08, 2018 at 18:39:46 (UTC)
Goto Top
Hallo,

dafür schaffst Du Dir eine download-Funktion.
../web/html/download.php (doc root)
../web/data/test1.pdf

Der Link könnte z.B. www.firma.de/download.php?file=test1.pdf lauten.

Du kannst das Data-Verzeichnis aber auch im Web-Bereich lassen /html/data/test1.pdf und per htaccess den Zugriff von extern verbieten.

Du musst den Parameter "richtig" prüfen.
Sonst nutzt bald einer ?file=../../../etc/users als Parameter.

Stefan