# Event Bilder Upload

App Preview

Ein einfacher, moderner und responsiver Web-Service zum datumsgenauen Hochladen von Bildern für beliebige Events. ## Organisatorische Details - **Zweck**: Sammeln von Bildern von Teilnehmern eines Events. - **Limitierungen**: - Maximale Dateigröße pro Bild: 15 MB - Erlaubte Formate: JPG, JPEG, PNG, GIF, WEBP, TIFF, HEIC - **Deadline**: Ein Upload-Zeitraum kann festgelegt werden. Nach Ablauf der Deadline sind keine Uploads mehr möglich. Der Countdown wird live auf der Seite angezeigt. - **Dateibenennung**: Die hochgeladenen Dateien werden serverseitig automatisch umbenannt. Das Format ist `Datum - Beschreibung.Endung`. Das Datum wird dabei intelligent aus den EXIF-Daten (Erstellungsdatum) des Bildes ausgelesen. - **Speicherort**: Alle Bilder werden im Unterordner `images/` abgelegt. ## Technische Details - **Technologie-Stack**: - Backend: PHP (Einzelne Datei `index.php`) - Frontend: HTML5, Vanilla JavaScript, Vanilla CSS - **Architektur**: - Keine Datenbank erforderlich. - Asynchrone Uploads via AJAX inklusive Fortschrittsbalken und Einzelstatus pro Bild. - Client-seitige und Server-seitige Validierung (Dateityp, Größe, Deadline). - **Abhängigkeiten**: - Webserver (z. B. Nginx, Apache oder Lighttpd) - PHP 8.x - PHP-Erweiterungen: `session`, `json`, `exif` (für das Auslesen des Aufnahmedatums), `mbstring` ## Konfiguration Das Skript ist neutral gestaltet und kann für jedes beliebige Event genutzt werden. Alle Anpassungen können direkt im Kopfbereich der Datei `index.php` vorgenommen werden. Es sind keine weiteren Änderungen im HTML-Code nötig. ```php // EVENT CONFIGURATION const EVENT_NAME = 'Event Bilder Upload'; const EVENT_SUBTITLE = 'Speichere deine Momente datumsgerecht.'; // DEADLINE CONFIGURATION // Format: YYYY-MM-DD HH:MM:SS const UPLOAD_DEADLINE = '2026-11-30 23:59:59'; ``` ## Installation auf einem frischen Alpine Linux Die folgende Anleitung beschreibt die schnelle Einrichtung auf einem frisch installierten Alpine Linux System unter Verwendung des integrierten PHP-Webservers. 1. **System aktualisieren**: ```sh apk update apk upgrade ``` 2. **PHP und benötigte Erweiterungen installieren**: ```sh apk add php php-json php-exif php-mbstring php-session ``` 3. **Projektdateien bereitstellen**: Legen Sie die Datei `index.php` in das gewünschte Verzeichnis auf dem Server (z. B. `/var/www/imgsender`). 4. **Verzeichnisrechte anpassen**: Damit das Skript den Ordner `images/` anlegen und die hochgeladenen Bilder speichern kann, benötigt der ausführende Nutzer Schreibrechte in dem Verzeichnis. ```sh cd /var/www/imgsender chmod 777 . ``` *(Hinweis: Für den dauerhaften produktiven Einsatz mit einem echten Webserver wie Nginx oder Lighttpd sollten die Rechte restriktiver auf den jeweiligen Webserver-Nutzer, z. B. `nobody`, angepasst werden: `chown -R nobody:nobody .`)* 5. **Server starten**: Für Testzwecke oder simple Deployments kann der integrierte PHP-Server genutzt werden: ```sh php -S 0.0.0.0:8080 -t . ``` Die Anwendung ist nun über den Browser unter `http://:8080` erreichbar.