FoF 文件上传 | FoF Upload

Flarum 文件上传的扩展程序,具有令人难以置信的智慧。

本文翻译 MIT license Latest Stable Version Total Downloads OpenCollective

⚠ 需 PHP 功能 exif 支持


功能

  • 图片上传
    • 自动水印。
    • 自动缩放
  • 文件管理
  • 使用 MIME 限定文件上传类型。
  • MIME 文件类型白名单。
  • 本地、第三方存储服务支持(imgur、AWS S3、S3 兼容、七牛云)。
  • 支持拖拽、粘贴上传。
  • 支持批量上传文件(按钮、拖拽上传均支持)。
  • 易扩展性,本扩展高度依赖于事件。
  • 扩展器接口,以禁用或强制使用特定的适配器(祥见下文)

安装

通过巴扎市场或 composer 手动安装:

composer require fof/upload

升级

composer require fof/upload
php flarum migrate
php flarum cache:clear

从 Flagrow 版本升级

本扩展是旧版 Flagrow Upload 的替代。

要从旧扩展升级到当前版本:

  • 备份数据库!您应该备份好数据库以及所有上传的文件。
  • 确保您当前是 Flagrow Upload 的最新版本,请运行:
    composer require flagrow/upload
    composer show flagrow/upload # You should see "versions: * 0.7.1" on the 4th line of output
    php flarum migrate
  • 在后台禁用上传插件。
  • 运行:
    composer require fof/upload
    Composer 应该会输出 flagrow/upload 已经被自动删除的信息。
  • 在后台开启新版上传插件。
  • 您此前旧版本的设置、上传元数据将会自动合并到 FoF Upload 旗下。
  • 帖子中的文件插入代码会自动更新为 FoF 头,这意味着您不需要删除他们。

设置

启用插件,新选项卡将会出现在左侧菜单栏。此设置页面可以让您进一步配置扩展程序。

请确保同时在权限页面上配置上传权限。

文件模板

文件模板详情请查看插件设置里的说明。这里注意一下,模板是由处理优先级的,同一个 MIME 类型文件,最上层的文件模板会覆盖掉下层设置的文件模板。

Mimetype 正则表达式

正则表达式使您拥有很大的自由度,但是它们也很难理解。这里有一些提示,您随时可以在 Flarum 官方论坛上寻求帮助。

  • 如果要允许所有常规文件类型,包括视频、音乐、压缩文件和图像,请使用以下命令:
    (video\/(3gpp|mp4|mpeg|quicktime|webm))|(audio\/(aiff|midi|mpeg|mp4))|(image\/(gif|jpeg|png))|(application\/(x-(7z|rar|zip)-compressed|zip|arj|x-(bzip2|gzip|lha|stuffit|tar)|pdf))
  • 如果您需要允许上传所有图片文件,请使用通配符:
    ^image\/.*
    MIME 类型由 主要类型 + 次要类型 组成。主类型可以是 imagevideoapplication
    次类型是更详细的规范,例如 pngpdf 等。两者之间用 / 分隔,在正则表达式中,您必须在斜线前添加转义字符来表示斜线:\/
    有关 MIME 类型,可以查看 MDN 文档

另外请注意,您添加的规则是有优先级的,最先添加的规则,优先级最高。

禁用或强制使用特定适配器

有些情况下,您可能想要禁用某个上传服务,或者强制使用某个上传服务。您可以在 Flarum 安装根目录的 extend.php 中设置。

例如,您可以禁用 imgur

(new FoF\Upload\Extend\Adapters())
        ->disable('imgur'),

也可以链式禁用多个服务:

(new FoF\Upload\Extend\Adapters())
        ->disable('imgur')
        ->disable('aws-s3'),

您也可以强制使用服务:

(new FoF\Upload\Extend\Adapters())
        ->force('imgur'),

当前可用的适配器有:

  • local
  • imgur
  • qiniu
  • aws-s3

常见问题

链接

OpenCollective

FriendsOfFlarum 制作扩展

本译文仅用于学习和交流目的,转载请务必注明文章译者、原文出处、和本文链接。

    开启对象存储后,图片正常,但其他类型的附件,实测是经过了原vps服务器代理下载,而不是直接从对象存储下载……去github发了issue也没人理

      [未知用户] 对,没问题,网站服务器确实没有文件,但确实走了服务器的流量,应该是网站服务器作为了一个中间代理转发了OSS的流量,因为我的网站服务器设置了限速,我测试下载的时候,速度最大值始终为我网站的最大速度,所以确实走了网站服务器流量,就很烦

        有没有这个插件的,后台配置的参考图
        因为是新手所以不知道是怎么弄的

          Golden
          再往下可不可以再截个图(完整的配置举例),
          (敏感的信息P掉)

          Golden 我感觉好像不是太好解决,其实我的想法可以直接把oss链接暴露出来,就像图片那样

          [未知用户]
          如果我不想配置cnd对象存储的话;本地OSS存储设置那里怎么填写呢

            alexelv2012 使用对象存储时,这个地方才需要配置 CDN 域名,如果是直接上传到服务器,这里就不填

              Golden
              我安装完了以后,使用后直接就是一个错误提示;我怎么知道我哪里错了呢;

              就是:
              糟糕出错了,请刷新页面重试

              设置上什么也没动

              是不是应该apache或者php配置上需要点什么权限什么的呢?

                Golden 更改标题为「FoF 文件上传器

                Golden
                [未知用户]

                1. 不支持中文文件名
                2. 增加新的类型的时候,选了七牛,点一下加号上去会自动变成本地,需要再改一次😂

                sinken 我以前经常遇见过,原因有些多,我还不太确定。