Files
imgsender/README.md
T
2026-07-17 18:31:58 +02:00

79 lines
3.2 KiB
Markdown

# Event Bilder Upload
<p align="center">
<img src="preview.png" alt="App Preview" width="500">
</p>
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://<server-ip>:8080` erreichbar.