Öffentliche Avatar-Uploads vor dem Absenden verkleinern (1,1 MB -> ~40 KB)
Der Performance-Check (pruef-tempo.mjs, neu) fand als größte Einzel- ressource ein 1,1-MB-Profilbild, ausgeliefert an jeden Besucher der Startseite und von stimmen.html -- angezeigt wird es handgroß. Ursache: Das öffentliche Stimmen-Formular (stimmen.js) lud Profilbilder ROH hoch. Die Bildaufbereitung vom 27.08. bekam nur die Verwaltung, nicht das öffentliche Formular. So landete das Kamera-Foto in voller Auflösung auf dem Server. - bild-vorbereiten.js (neu): die Verkleinerungs-Funktion, jetzt einmal und parametrisierbar (maxBreite). Verwaltung nutzt weiter 1600px, Avatare 512px. Test pruef-bild-vorbereiten.mjs: 8/8, u.a. 512er-Avatar ~40 KB statt >1 MB. - stimmen.js: verkleinert vor dem Upload (window.bildVorbereiten mit maxBreite 512); fällt die Funktion aus, wird das Original genommen -- kein Upload darf daran scheitern. - stimmen.html: lädt bild-vorbereiten.js; veralteten Kommentar richtiggestellt (behauptete "kein Upload", obwohl es seit 21.08. einen gibt -- mit Bremse, Typ-/Größenlimit, Freigabe-Pflicht). Zwei neue Checks als bleibende Absicherung mit committet: pruef-links.mjs (41 interne Ziele, 0 kaputt) und pruef-assets.mjs (67 Ressourcen, 0 fehlen). NOCH OFFEN: verwaltung.html hat noch eine eigene, identische Inline-Kopie der Funktion -- die Zusammenführung ist ein eigener, testbarer Schritt (das Inline-Skript dort ist groß und die Verwaltung hinter dem Gate schwer live zu testen). Das bestehende 1,1-MB-Bild auf dem Server bleibt, bis es neu hochgeladen/ersetzt wird. Co-Authored-By: Claude Opus 5 <[email protected]>
This commit is contained in:
+11
-1
@@ -69,7 +69,17 @@
|
||||
eigenesBtn.classList.add("laedt");
|
||||
try {
|
||||
const form = new FormData();
|
||||
form.append("image", datei);
|
||||
/* Vor dem Upload verkleinern (bild-vorbereiten.js). Ein Profilbild
|
||||
erscheint nur handgroß -- 512px sind großzügig und machen aus
|
||||
einem Handy-Foto von mehreren MB rund 30-50 KB. Ohne diesen
|
||||
Schritt landete bis 28.08.2026 z.B. ein 1,1-MB-Avatar auf dem
|
||||
Server und wurde jedem Startseiten-Besucher ausgeliefert.
|
||||
Fällt window.bildVorbereiten aus (Skript nicht geladen), wird
|
||||
die Originaldatei genommen -- kein Upload darf daran scheitern. */
|
||||
const fertig = window.bildVorbereiten
|
||||
? await window.bildVorbereiten(datei, { maxBreite: 512 })
|
||||
: datei;
|
||||
form.append("image", fertig);
|
||||
const res = await fetch(`${API_BASE_URL}/testimonials/upload-avatar`, { method: "POST", body: form });
|
||||
const data = await res.json();
|
||||
if (!data.ok) {
|
||||
|
||||
Reference in New Issue
Block a user