Discourse 配置minio s3 自定义附件在本地没有上传到s3

我在编辑器上传了一张图片 和一个附件 但附件是在本地的搞不明白了

https://ug.cx/uploads/short-url/fX0nPvpBBdSaAinhRfjoQtICyM7.prt

这个需要在哪里设置?

还挺有意思的,我也试了下,貌似有你看到的问题,只有图片和视频文件存到 S3 了?

_model3.7z (84.6 KB)

2023年度长沙市自然科学基金项目申报指南.docx (16.2 KB)

19 Tileston St, Apt 2 Property Information - Realtors Property Resource.pdf (1.7 MB)

验证

我也上传了一些文件,包括你模块中使用的扩展名。

因为我限制了我们的网站不用这个扩展名,所以给改成 7zip 了。

从 URL 看是没有上传到 S3,但后来我们到网站后台存储附件的路径下,没有找到这个文件。

然后访问了 Discourse 的数据库,数据库上有 S3 的路径。

所以可以确定附件是上传到了 S3 上了。

登录到 S3 也能验证文件被上传上来了。

解释

可以解释的是,针对附件的处理,如果使用了 S3,那么所有的附件都会上传到 S3 上。

针对图片和视频的引用,Discourse 会直接使用 CDN 的 URL 而跳过 Discourse 的转发以降低带宽。

针对其他文件格式,具体有没有设置,我还不太清楚

数据流程是,Discourse 提供了一个 URL,当用户请求这个 URL 的时候,Discourse 会到 S3 获取数据,然后进行转发,或者 Discourse 直接把这个 URL 映射成了 S3 的地址。

具体怎么实现我还没有完全找到证据。

所以,针对用户虽然看到的附件 URL 地址还是使用的 short-url 的地址,但真实的附件是没有存储在本地的。

2 Likes

或许如你所说 short-url 是为了隐藏真实的文件地址 并可以通过设置 prevent anons from downloading files 阻止匿名用户下载附件。

我尝试设置后 无痕模式访问附件 提示

糟糕!该页面不存在或者是一个不公开页面。

我尝试了这个设置。

在无痕模式下,针对没有登录的用户得到的错误是,用户需要登录才可以进行访问:

如果是已登录的用户,则没有什么问题。