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:
-
Serverseitige Medienerkennung aus dem Post-Inhalt — Bestimme, ob ein Post Medien enthält, indem du den
raw- odercooked-Post-Inhalt (oder Upload-Referenzen) auf dem Server überprüfst, anstatt dich ausschließlich auf das vom Client bereitgestellteimage_sizes-Feld zu verlassen. -
Ü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.