Medienprüfung wird übersprungen, wenn image_sizes leer ist

Dieser Fehler betrifft die Einstellung Skip review media groups.

Beim Hochladen eines Bildes vom Mobilgerät ist der Bild-Upload erfolgreich, und der Post-Text enthält korrekt einen Bildverweis (z. B. ...).

Allerdings enthält die nachfolgende POST /posts-Anfrage:

“image_sizes”: {}

Die serverseitige Medien-Review-Prüfung wird nur ausgeführt, wenn manager.args[:image_sizes].present? wahr ist:

if manager.args\[:image_sizes\].present? &&
       !user.in_any_groups?(SiteSetting.skip_review_media_groups_map)
    return :contains_media
  end

Ein leeres Hash ist in Ruby nicht present?, sodass der Post nicht als medienhaltig erkannt wird und nicht zur Prüfung eingereicht wird. Die Prüfung skip_review_media_groups wird daher nie erreicht.

HAR-Nachweis:

  • POST /uploads war erfolgreich (2xx).
  • Die POST /posts-Nutzlast enthält Bild-Markdown im raw-Feld.
  • Dieselbe Nutzlast enthält “image_sizes”: {}.
  • Der Post wurde nicht zur Prüfung in die Warteschlange aufgenommen.

Der Web-Composer erstellt image_sizes aus den Bildern im Editor-Vorschau-DOM. Dies macht die Medien-Review abhängig von vom Client bereitgestellten Vorschau-Metadaten, die auf mobilen Clients fehlen können oder wenn das Vorschau-Bild noch nicht geladen ist.

Erwartetes Verhalten: Ein Post, der ein hochgeladenes oder eingebettetes Bild enthält, sollte unabhängig davon, ob der Client Bilddimensionen sendet, in die Medien-Review einfließen.

Vorgeschlagene Lösung:

  1. Serverseitige Medienerkennung aus dem Post-Inhalt — Bestimme, ob ein Post Medien enthält, indem du den raw- oder cooked-Post-Inhalt (oder Upload-Referenzen) auf dem Server überprüfst, anstatt dich ausschließlich auf das vom Client bereitgestellte image_sizes-Feld zu verlassen.

  2. Überprüfe alle hochgeladenen Mediendateien (besser als 1) — Überprüfe nicht nur Mediendateien, die innerhalb eines Posts erscheinen, sondern jede Mediendatei, die vom Benutzer hochgeladen wurde. Dies eliminiert die Abhängigkeit von Post-Metadaten vollständig und stellt sicher, dass keine hochgeladenen Medien die Prüfungsumgehung passieren, unabhängig vom verwendeten Client oder Endpunkt.