# 当 image\_sizes 为空时，媒体审核被跳过

**URL:** <https://meta.discourse.org/t/media-review-is-bypassed-when-image-sizes-is-empty/408608>\
**Category:** Bug\
**Tags:** uploads, composer, review-queue\
**Created:** [2026年七月27日 13:55 UTC](https://meta.discourse.org/t/media-review-is-bypassed-when-image-sizes-is-empty/408608 "2026-07-27T13:55:41Z")\
**Posts on this page:** 1\
**Showing post:** 1

<div class="post-metadata">

**Author:** ![Editor0732](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/editor0732/32/492698_2.png) [@Editor0732](https://meta.discourse.org/u/Editor0732)\
**Post date:** [2026年七月27日 13:55 UTC](https://meta.discourse.org/t/media-review-is-bypassed-when-image-sizes-is-empty/408608/1 "2026-07-27T13:55:41Z")

</div>

此 Bug 涉及 `Skip review media groups`（跳过媒体审查组）设置。

当从移动设备发布图片时，图片上传成功，且帖子正文中正确包含了图片引用（例如， ![...](https://sea3.discourse-cdn.com/meta/images/transparent.png)）。

然而，随后的 POST /posts 请求包含：

“image\_sizes”: {}

服务器端的媒体审查检查仅在 manager.args[:image\_sizes].present? 时运行：

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

```

在 Ruby 中，空哈希不被视为 present?，因此该帖子未被识别为包含媒体内容，也不会被送入审查队列。因此，skip\_review\_media\_groups 检查永远不会被执行。

HAR 证据：

- POST /uploads 成功（2xx）。
- POST /posts 负载在 raw 字段中包含图片 Markdown。
- 同一负载中包含 “image\_sizes”: {}。
- 该帖子未被加入审查队列。

Web 编辑器通过编辑器预览 DOM 中的图片构建 image\_sizes。这使得媒体审查依赖于客户端提供的预览元数据，而这些数据在移动客户端上可能缺失，或者在预览图片尚未加载时缺失。

预期行为：包含已上传/嵌入图片的帖子应进入媒体审查流程，无论客户端是否发送图片尺寸信息。

建议的修复方案：

1. **从帖子内容进行服务器端媒体检测** — 通过检查服务器端的 `raw` 或 `cooked` 帖子内容（或上传引用）来确定帖子是否包含媒体，而不是仅依赖客户端提供的 `image_sizes` 字段。

2. **审查所有上传的媒体文件（优于方案 1）** — 不再仅审查帖子中出现的媒体文件，而是直接审查用户上传的 **所有** 媒体文件。这完全消除了对帖子级元数据的依赖，并确保无论使用何种客户端或端点，没有任何上传的媒体能绕过审查队列。

---

_[View the full topic](https://meta.discourse.org/t/media-review-is-bypassed-when-image-sizes-is-empty/408608)._
