• Extensions
  • FriendsOfFlarum upload, the intelligent file attachment extension

Upload by FriendsOfFlarum

MIT license Latest Stable Version Total Downloads OpenCollective

An extension that handles file uploads intelligently for your forum.

Features

  • For images:
    • Auto watermarks.
    • Auto resizing.
  • Mime type to upload adapter mapping.
  • Whitelisting mime types.
  • Uploading on different storage services (local, imgur, AWS S3 for instance).
  • Drag and drop uploads.
  • Uploading multiple files at once (button and drag and drop both support this).
  • Easily extendable, the extension heavily relies on Events.
  • Extender interface to disable or force particular adapters (see below)

Installation

Install manually:

composer require fof/upload "*"

Updating

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

Configuration

Enable the extension, a new tab will appear on the left hand side. This separate settings page allows you to further configure the extension.

Make sure you configure the upload permission on the permissions page as well.

Mimetype regular expression

Regular expressions allow you a lot of freedom, but they are also very difficult to understand. Here are some pointers, but feel free to ask
for help on the official Flarum forums.

In case you want to allow all regular file types including video, music, compressed files and images, use this:

(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))

A mimetype consists of a primary and secondary type. The primary type can be image, video and application for instance.
The secondary is like a more detailed specification, eg png, pdf etc. These two are divided by a /, in regex you have to escape this character by using: \/.

Disable or Force a particular adapter

In some circumstances, you may wish to either disable an adapter, or force the use of one. This is set in your root extend.php file.

For example, you may disable imgur

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

Chaining of multiple commands is also possible:

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

You may also force an adapter:

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

Adapter names currently available:

  • local
  • imgur
  • qiniu
  • aws-s3

Commands

MapFilesCommand

⚠️

This command is temporarily disabled, whilst a potential data loss issue is investigated. FriendsOfFlarum/upload374

Using php flarum fof:upload you have a powerful tool in your hands to map uploads to posts and
clean up unused files. To do so there are two steps to take into consideration:

  • Mapping (--map) allows you to look through posts to identify whether which uploaded files have been used inside any posts, and store this information
  • Clean up (--cleanup, --cleanup-before=yyyy-mm-dd) grants you to ability to remove files that have been uploaded before the given time and haven't been mapped to any (existing) posts.

The intent of this command stems from the original concept of understand what uploads are used where and to allow removal
of unused, stale files. You can run this command manually or as a cronjob.

Example 1; only mapping files:

php flarum fof:upload --map

Example 2; map and clean up

php flarum fof:upload --map --cleanup --cleanup-before="a month ago"

Once you're happy with how the command operates, you can append the flag --force, which removes the need to confirm
the action:

php flarum fof:upload --map --cleanup --cleanup-before="last year" --force

The following (to resume) will happen when this command is put into a recurring cronjob:

  • based on the interval of the cronjob (daily, weekly or however)
  • the command will go over all uploads to discover in which posts they have been used
  • delete those files that have been uploaded "last year" that have not been found in posts

FAQ

Links

An extension by FriendsOfFlarum

    luceos changed the title to Flagrow file upload, the intelligent file attachment extension .

    hcarpach I tried it earlier today. Appears to currently work for images, but not yet other files. Somewhat soon, I should think.

      UaMV is it best to install this new extension or the previous image-upload by the same devs?

        UaMV for now I've whitelisted a few mime types, just to make sure we're not allowing php files. Among them are video, image and audio. As pdf for instance are application/pdf mime types, I'll be allowing you to specify the whitelist yourself.

        hcarpach so yes the uploader works, it auto generates a markdown string. In case of images it also generates a previewable markdown string. Also I prefer you to install this extension for now, if you can miss out on the adapters implemented in the image upload extension (imgur for instance). I'll be adding more adapters soon, but I'm not sure the image-only ones will have priority. Feel free to request any missing adapter (upload cloud/platform) by creating an issue.

          luceos any plan to split upload button for each mime types?

          Take a look at Plush Forum text editor for better understanding what i'm talking about.

            LawuKini Actually no, from my point of view we need as little cluttering as possible in the composer. But if you're willing to create a github issue and initiate a discussion with well founded argumentation and proposals, I think we'll find a way that suits all our wishes.

              Tagged 0.1.1 let me know if you run into any issues.

              See changelog in OP for information.

                sijad where? I pm'ed you there.

                Tagged 0.1.2 with minor admin page fixes.

                version 0.1.3 which deletes files when upload adapter does not support the file mime and removed text/* as safe mime types for now
                @sijad thank you ?

                Great addition!

                Are you able to upload multiple files at once? ?