Chunky for Craft CMS

FAQ

Is this a fork of the abandoned Chunked File Uploads plugin?

No. sebastianlenz/craft-chunked-uploads solved the same problem and was abandoned; Chunky is a fresh implementation against Craft 5. The most-reported limitation of that plugin was that it only worked on the Assets screen and not on entries. Chunky works on both, and on “Replace file” too.

Does it slow down small uploads?

It does not touch them. The decision is made per file at the moment it is submitted: at or under the chunk size, the file is posted whole to Craft's own upload action, along the exact code path it would have taken without the plugin installed.

Do I still need to raise upload_max_filesize?

Only above the chunk size, not above the file size. On a stock PHP installation with a 2 MB limit, set the chunk size to 1 MB and 4 GB files will upload.

Does it work behind Cloudflare?

Yes, and it is one of the main reasons to install it. Cloudflare's free plan rejects any request body over 100 MB regardless of what your server allows. A 4 MB chunk never comes close.

Does it work with S3 / DigitalOcean Spaces / any other remote volume?

Yes. Chunky's job ends when the file is complete on the server's own disk; from there it goes through Craft's normal asset creation, and the volume takes it from there exactly as it would a small upload.

If you use a plugin that uploads directly from the browser to S3, that plugin registers its own uploader class and Chunky leaves it alone — direct upload already solves the same problem a different way.

Can visitors use it on a front-end form?

Not in this release. Chunky decorates control panel uploaders. A front-end upload form built with Craft's own asset field posts to the same action, but the script is only served to the control panel, so the file goes up whole.

Does it work with Feed Me, Formie, or another plugin's uploads?

Only if that plugin uses Craft's Craft.Uploader and posts to assets/upload — most control panel asset pickers do, and those are covered. A plugin with its own upload action is not.

What happens if someone closes the tab halfway through?

A .part file is left in storage/runtime/chunky, and Craft's garbage collection removes it after the configured lifetime — a day by default. Nothing else is left behind: no rows, no elements, no project config.

Can one user resume another user's upload?

No. Partials are stored under the owning user's own directory and every lookup is scoped to the signed-in user, so an identifier belonging to somebody else simply does not resolve.

Are permissions still enforced?

On every chunk, not just the last one — a user who cannot save to the target folder should not be able to spend the server's disk finding that out. The checks are Craft's own AssetsControllerTrait, not a copy of it.

Does it need a database table?

No. An upload in progress is two files on disk; a finished one is an ordinary Craft asset.

Is it free?

Yes, single edition, everything switched on.