合并后图片未加载,即使文件存在且上传模型存在

我使用了 将两个 Discourse 站点合并为一个,大部分都成功了,但第二个站点的图片没有显示出来。

我可以这样做:

p=Post.find_by(topic_id: 222435, post_number: 11)
short_url=p.raw.match(/(upload:\/\/.*?)\)/)[1]
up=Upload.sha1_from_short_url(short_url)

up.url 看起来像 /uploads/default/original/3X/9/e/9ebb54f0e825c05df7f6df271a5cfbdc95a6332c.jpeg,并且 cd /shared; ls uploads/default/original/3X/9/e/9ebb54f0e825c05df7f6df271a5cfbdc95a6332c.jpeg 可以找到文件。

但是 https://host/uploads/default/original/3X/9/e/9ebb54f0e825c05df7f6df271a5cfbdc95a6332c.jpeg 会给我一个 nginx 的 404 错误。

看起来如果 Upload 存在并且文件存在,NGINX 应该会让我访问它。我错过了什么?

对于一些图片,我通过粘贴测试站点的图片 URL 来“解决”了这个问题,这会生成图片,然后将其转换为上传(据我所知,就是我找到的那个上传),然后如果我重建帖子,它就会有图片。

我尝试过这样做:

f=File.open('/shared/uploads/default/original/2X/9/9ebb54f0e825c05df7f6df271a5cfbdc95a6332c.jpeg')
upload = UploadCreator.new(f, 'upload.jpeg').create_for(-1)

来做和粘贴图片远程 URL 相同的事情,但那也不起作用。

@RGJ。你有没有什么提示,关于如何获取这些似乎存在于数据库和文件系统中的图像,以便在重新烘焙时进行渲染?

讨厌调试这类错误。
大多数时候,我只是在 Rails 控制台中手动执行控制器中的代码。

这次我猜 404 可能是来自第 111 行

Discourse.store.list_missing_uploads(skip_optimized: true) 会给你什么?

1 个赞

我们在这方面是一样的。但我很确定你比我擅长。非常感谢你的提示。

我正在尝试这样做。

这似乎是个不错的猜测。谢谢!

nilskip_optimized: false – 也是一样。

我设法修复了一个帖子的上传问题,但显然没有做好笔记。 :person_shrugging: 但我做了很多事情才做到这一点;我大部分时间都希望至少有可能做到。

1 个赞