upload
This commit is contained in:
@@ -0,0 +1,78 @@
|
||||
# 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.
|
||||
Reference in New Issue
Block a user