PHP: Dateien anzeigen aus nicht-browsbaren Ordner
Autor: Ralf v.d.Mark
eingetragen: Dienstag, 07. November 2023 um 13:38 Uhr (45/2023 Kalenderwoche)
geändert: Dienstag, 07. November 2023 um 13:40 Uhr (45/2023 Kalenderwoche)
Keywords: Dateien anzeigen nichtbrowsbaren Ordner
Kategorien: PHP,
Text:
PHP: Dateien anzeigen aus nicht-browsbaren Ordner
Quellcode:
<?php
/**
* Dateien anzeigen aus nicht-browsbaren Ordner
*
* PHP version 8
*
* @name dateiLadenZumTesten.php
* mit Pfad: eler-oe\public\dateiLadenZumTesten.php
* @author Ralf von der Mark (vdM), Ref. 223 (Entwicklung), BLE <Ralf.vonderMark@BLE.de>
* @copyright 2023, BLE
* @version 07.11.2023, GIT: Yes
*/
$dataVerzeichnis = $_SERVER['DOCUMENT_ROOT'] . '/../data/ELER/';
if (!empty($_GET['name'])) {
$name = strip_tags($_GET['name']);
} else {
$name = '';//Standardwert!
}//ENDE: else → if (!empty($_POST['name']))
if (isset($_GET['verz'])) {
$verz = strip_tags($_GET['verz']);
} else {
$verz = '';//Standardwert!
}//ENDE: else → if (!empty($_POST['typ']))
$parseDateiname= pathinfo($name);//enthält ['dirname', 'basename', 'extension', 'filename']
$dateiendung = strtolower($parseDateiname['extension']);
if (in_array($dateiendung, ['jpg', 'jpeg', 'gif', 'png'])) {
$typ = 'bild';
$verzeichnis = 'IMAGES';
} else {
$verzeichnis = 'DOC_PDF';
}//ENDE: else → if (in_array($dateiendung, ['jpg', 'jpeg', 'gif', 'png']))
//Eigentlich sollte das IMAGES-Verzeichnis genutzt werden, aber wenn typ=doc, dann auf DOC_PDF umschalten!
if (!empty($verz) && $verz === 'doc') {
$verzeichnis = 'DOC_PDF';
} elseif (!empty($typ)) {
$verzeichnis = 'IMAGES';
}//ENDE: else → if ($typ === 'pdf')
$dateiUndPfad = $dataVerzeichnis . $verzeichnis . '/' . $name;
if (file_exists($dateiUndPfad)) {
$filesize = filesize($dateiUndPfad);
if ($typ === 'bild') {
header('Content-type: image/' . $dateiendung);
} else {
//Wenn obriges nicht zutrifft, dann...
header('Content-Type: application/pdf');
header('Content-Length: '.$filesize);
header('Content-disposition: inline; filename="' . $name . '"');
header('Cache-Control: public, must-revalidate, max-age=0');
header('Pragma: public');
header('Expires: Sat, 26 Jul 1997 05:00:00 GMT');
header('Last-Modified: '.gmdate('D, d M Y H:i:s').' GMT');
}//ENDE: else → if ()
readfile($dateiUndPfad);
} else {
//Wenn obriges nicht zutrifft, dann...
echo 'Die Datei "'.$name.'" wurde im Ordner "/'.$verzeichnis.'/" nicht gefunden!';
}//ENDE: else → if (file_exists())