PHP: Dateien anzeigen aus nicht-browsbaren Ordner

edit | delete

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())