【翻译】Discourse 文件上传的新时代

原文:https://meta.discourse.org/t/a-new-era-for-file-uploads-in-discourse/210469
翻译原文:https://rail.moe/t/topic/2702

在过去的几个月中,您可能已经注意到许多与 Discourse 核心上传相关的提交。这是核心内部从我们的代码库替换jQuery 文件上传的使用的整体努力的一部分,作为从我们的代码库替换 jQuery 本身的使用的更广泛的整体努力的一部分。jQuery 文件上传器是一个非常古老的项目,几乎从一开始就成为 Discourse 核心的一部分。我想我在其他项目的整个职业生涯中也都使用过它。但是是时候让 Ol’ Reliable 退休了:

图片

我们已经用一个名为Uppy的库替换了 jQuery 文件上传(并且很快也会替换另一个库resumable.js)。这是一个更现代的上传库,可以通过插件轻松扩展,并且能够处理我们投入的所有不同工作流程。重要的是,这允许我们从 Discourse 客户端直接分段上传到 S3,而不必通过我们的 API 发送大文件。

编辑器现在将 Uppy 用于所有上传,整个应用程序中的许多其他地方都使用它(头像上传、个人资料背景上传等)。在接下来的几周内,最后的几个坚持将消失。对于大多数用户来说,这应该是一个很大程度上不可见的更改,但是插件和主题组件作者需要进行一些更改。

S3 分段直接上传

之前我提到我们使用 Uppy 还允许我们从 UI 直接分段上传到 S3。要启用此功能,您需要将enable_direct_s3_uploads 站点设置设置为true

如果您由我们托管,则相关的 S3 权限已应用于您的存储桶。但是,如果您是自托管,则必须在您的存储桶上设置多个权限和 CORS 规则才能使其正常工作。

对于 CORS 规则,您只需要s3:ensure_cors_rules 使用rake s3:ensure_cors_rules . 只要您为 Discourse 实例上的 S3 凭证设置的任何访问和密钥启用S3:GetBucketCorsS3:PutBucketCors 启用了权限,它就会将以下规则添加到您的存储桶中。

这是一个漫长的几个月的制作过程,我们还没有完成!当我们即将从 Discourse 核心中完全删除 jQuery 文件上传器和 resumable.js 时,我将在这个主题中发布。

10 Likes

limelight 需要的可能不是更新而是重构(((

6 Likes

最好笑的是有人在下面报错,说:
我的Firefox 68不支持uppy。

互联网真是什么人都有啊。

2 Likes

Firefox68不支持uppy…
他是不是好久没有升级过自己的Firefox了…

1 Like

这怕是
果然是对 fenix 不满 一直用 fennec 的(其实 fenix nightly 的 addon provider 是可以改的

3 Likes