PHPackages                             cakedc/cakephp-uppy - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [File &amp; Storage](/categories/file-storage)
4. /
5. cakedc/cakephp-uppy

ActiveCakephp-plugin[File &amp; Storage](/categories/file-storage)

cakedc/cakephp-uppy
===================

CakeDC Uppy plugin for CakePHP

2.3.0(2mo ago)25.3k↓17.4%2MITPHPPHP &gt;=8.1CI passing

Since Oct 10Pushed 1mo ago6 watchersCompare

[ Source](https://github.com/CakeDC/cakephp-uppy)[ Packagist](https://packagist.org/packages/cakedc/cakephp-uppy)[ RSS](/packages/cakedc-cakephp-uppy/feed)WikiDiscussions 2.next-cake5 Synced 2w ago

READMEChangelog (7)Dependencies (28)Versions (24)Used By (0)

CakeDC Uppy Plugin
==================

[](#cakedc-uppy-plugin)

The **Uppy** plugin covers the following features:

- Upload files directly from the browser to a configured cloud storage backend using a presigned URL
- **Multipart upload support** for large files (&gt;100MB) - files are uploaded in parts directly to S3, bypassing PHP memory/timeout limits
- Pluggable storage drivers: **Amazon S3**, **Google Cloud Storage**, and **Cloudflare R2** (selectable via `Uppy.driver`)
- Persist file path, mime type, date, metadata and the relation to the user (or other related model) in the `uppy_files` table

Requirements
------------

[](#requirements)

- CakePHP 5.0+
- PHP 8.1+

Configuration
-------------

[](#configuration)

You must configure the connection parameters for your storage backend in `config/uppy.php`:

```
return [
    'Uppy' => [
        'driver' => 's3', // 's3' | 'gcs' | 'r2'
        'MaxFileSize' => null, // Maximum file size in bytes, null = no limit
        'MultipartThreshold' => 104857600, // 100 MiB - use multipart for files above this size
        'AcceptedContentTypes' => ['application/pdf', 'image/png', ...],
        'AcceptedExtensions' => ['pdf', 'png', ...],
        'S3' => [
            'constants' => [
                'lifeTimeGetObject' => '+20 minutes',
                'lifeTimePutObject' => '+5 minutes',
                'lifeTimeUploadPart' => '+20 minutes',
            ],
            'config' => [
                'version' => 'latest',
                'region' => env('S3_REGION'),
                'use_path_style_endpoint' => (bool)env('S3_USE_PATH_STYLE_ENDPOINT', false),
                'credentials' => [
                    'key' => env('S3_KEY'),
                    'secret' => env('S3_SECRET'),
                ],
            ],
            'bucket' => env('S3_BUCKET'),
        ],
    ],
];
```

**Configuration Options:**

- `MaxFileSize` - Optional maximum upload size in bytes; when set, `filesize` in sign/create requests is validated server-side (`null` = no limit)
- `MultipartThreshold` - File size in bytes above which the client should use multipart upload (default 100 MiB); exposed to the browser via `UppyHelper::getUploadConfig()` and `window.UppyUploadConfig`
- `AcceptedContentTypes` - List of MIME types allowed for storage in S3 and saved in database
- `AcceptedExtensions` - List of file extensions allowed for storage
- `lifeTimeGetObject` - TTL for presigned GET URLs
- `lifeTimePutObject` - TTL for presigned PUT URLs (simple uploads)
- `lifeTimeUploadPart` - TTL for presigned part upload URLs (multipart uploads)
- `use_path_style_endpoint` - Set `true` for MinIO and other S3-compatible stores (or via `S3_USE_PATH_STYLE_ENDPOINT` env)

Endpoints
---------

[](#endpoints)

The plugin provides the following API endpoints:

**Simple Uploads:**

- `/uppy/files/sign` - Generate presigned PUT URL for direct browser-to-S3 upload (small files)
- `/uppy/files/save` - Save file metadata to database after upload
- `/uppy/files/delete` - Delete file from database and optionally from storage
- `/uppy/files/view/{id}` - Redirect to presigned GET URL for file access

**Multipart Uploads (for files &gt;100MB):**

- `/uppy/files/create-multipart-upload` - Start a multipart upload; returns `uploadId` and object `key`
- `/uppy/files/sign-part` - Presign a single multipart upload part
- `/uppy/files/complete-multipart-upload` - Complete a multipart upload with part ETags
- `/uppy/files/abort-multipart-upload` - Abort an in-progress multipart upload

See [Multipart Upload Documentation](Docs/Documentation/Multipart-Upload.md) for detailed information about large file uploads.

Documentation
-------------

[](#documentation)

For documentation, as well as tutorials, see the [Docs](Docs/Home.md) directory of this repository.

**Additional Documentation:**

- [Multipart Upload Guide](Docs/Documentation/Multipart-Upload.md) - Detailed guide for handling large file uploads

Support
-------

[](#support)

For bugs and feature requests, please use the [issues](https://github.com/CakeDC/cakephp-inertia/issues) section of this repository.

Commercial support is also available, [contact us](https://www.cakedc.com/contact) for more information.

Contributing
------------

[](#contributing)

This repository follows the [CakeDC Plugin Standard](https://www.cakedc.com/plugin-standard). If you'd like to contribute new features, enhancements or bug fixes to the plugin, please read our [Contribution Guidelines](https://www.cakedc.com/contribution-guidelines) for detailed instructions.

License
-------

[](#license)

Copyright 2024 - 2026 Cake Development Corporation (CakeDC). All rights reserved.

Licensed under the [MIT](http://www.opensource.org/licenses/mit-license.php) License. Redistributions of the source code included in this repository must retain the copyright notice found in each file.

###  Health Score

52

—

FairBetter than 96% of packages

Maintenance88

Actively maintained with recent releases

Popularity28

Limited adoption so far

Community17

Small or concentrated contributor base

Maturity62

Established project with proven stability

 Bus Factor2

2 contributors hold 50%+ of commits

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~74 days

Recently: every ~1 days

Total

14

Last Release

81d ago

Major Versions

1.0.0 → 2.0.12023-11-23

1.2.2 → 2.1.02026-05-25

1.3.0 → 2.3.02026-05-29

PHP version history (2 changes)2.0.0PHP &gt;=8.1

1.0.0PHP &gt;=7.4

### Community

Maintainers

![](https://avatars.githubusercontent.com/u/204531?v=4)[Cake Development Corporation](/maintainers/CakeDC)[@CakeDC](https://github.com/CakeDC)

---

Top Contributors

[![arusinowski](https://avatars.githubusercontent.com/u/1587389?v=4)](https://github.com/arusinowski "arusinowski (15 commits)")[![steinkel](https://avatars.githubusercontent.com/u/151761?v=4)](https://github.com/steinkel "steinkel (12 commits)")[![flohdez](https://avatars.githubusercontent.com/u/110687305?v=4)](https://github.com/flohdez "flohdez (11 commits)")[![skie](https://avatars.githubusercontent.com/u/130799?v=4)](https://github.com/skie "skie (3 commits)")[![ACampanario](https://avatars.githubusercontent.com/u/14872836?v=4)](https://github.com/ACampanario "ACampanario (1 commits)")[![AReveron](https://avatars.githubusercontent.com/u/41989865?v=4)](https://github.com/AReveron "AReveron (1 commits)")

---

Tags

cakephpplugins3s3-storageuppycakephpuploaduppycakedcamazon-s3

###  Code Quality

TestsPHPUnit

Static AnalysisPHPStan

Type Coverage Yes

### Embed Badge

![Health badge](/badges/cakedc-cakephp-uppy/health.svg)

```
[![Health](https://phpackages.com/badges/cakedc-cakephp-uppy/health.svg)](https://phpackages.com/packages/cakedc-cakephp-uppy)
```

###  Alternatives

[league/flysystem-aws-s3-v3

AWS S3 filesystem adapter for Flysystem.

1.7k293.8M1.2k](/packages/league-flysystem-aws-s3-v3)[cakephp/bake

Bake plugin for CakePHP

11212.2M223](/packages/cakephp-bake)[dereuromark/cakephp-ide-helper

CakePHP IdeHelper Plugin to improve auto-completion

1892.4M48](/packages/dereuromark-cakephp-ide-helper)[dereuromark/cakephp-tools

A CakePHP plugin containing lots of useful and reusable tools

3321.0M51](/packages/dereuromark-cakephp-tools)[dereuromark/cakephp-queue

The Queue plugin for CakePHP provides deferred task execution.

308995.7k27](/packages/dereuromark-cakephp-queue)[dereuromark/cakephp-tinyauth

A CakePHP plugin to handle user authentication and authorization the easy way.

131242.7k13](/packages/dereuromark-cakephp-tinyauth)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
