79 lines
3.2 KiB
Markdown
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.
|