部分链接图片无法显示或显示为损坏

我正在通过 API 将大量内容(约 1.5 万篇新闻故事)迁移到 Discourse,这些话题中包含图片链接。这些图片刚刚上传到了 Blob 存储,并且完全公开可访问。

大多数话题中的图片都能正确显示,并按预期被热链接下载并上传到 Discourse。但有些话题中的图片要么仅显示为链接,要么因某种原因显示为损坏的图片。

例如:

仅显示为链接:

显示为损坏:

在损坏的情况下,编辑时话题显示如下:

配置如下:

  • 全新的 Discourse 安装,仅用于测试迁移
  • 图片存储使用 S3

我直接以用户身份创建帖子并上传图片时没有任何问题,似乎只有在通过 API 批量快速迁移帖子时才会出现此问题(我使用了 skip_validations=true 参数)。到目前为止,我每次最多只迁移了 1,000 个话题,然后清空数据重新开始。

有什么可能导致此问题的原因吗?或者有什么诊断建议?所有 Hotlink Sidekiq 任务似乎都按预期被调度和执行。

rake posts:rebake 命令也无济于事。

带那个小管理员扳手的重建 HTML 选项怎么样?

image

您的文件有双重扩展名——.jpeg.jpg——所有被拒绝的文件都是如此吗?

是否有任何双重扩展名的文件已成功处理?

谢谢罗伯特。我尝试的前几个都成功了。它又回到了原点,即渲染热链接的图片,然后下载/上传它。

我得看看能否将其自动化,尽管这并没有解决它们最初失败的根本原因。

不,双重扩展名的图片属于少数情况,并非所有故障均由其引起。不过,“重建 HTML

太棒了,恭喜!:partying_face: 幸运的是,当我遇到类似问题时,这里的其他热心人教会了我,现在我很高兴能把这个方法分享给你。:sunglasses:

好的,我已经通过 API 使用 /posts/{num}/rebake 修复了所有迁移的帖子。奇怪的是,容器中的 rake posts:rebake 命令无法工作。

在自动化调用 rebake API 后,发现图片上传失败率高达约 80%。这实在令人难以置信。

最终发现这并不可靠,它只能处理几篇帖子,无法适用于所有帖子。我得再尝试一次上传图片。之前我也遇到过类似问题,请求会一直挂起。不过我不确定当时是否在这些请求中尝试过使用 skip_validations 参数。

这篇帖子中提供了一些关于修复损坏图片的建议,或许能帮到你:Rebake with rails command or rake task doesn't work, but rebuilding HTML does. Why? - #12 by RGJ