{"id":13684234,"url":"https://github.com/dereuromark/cakephp-file-storage","last_synced_at":"2026-05-02T15:01:30.502Z","repository":{"id":61455966,"uuid":"309511008","full_name":"dereuromark/cakephp-file-storage","owner":"dereuromark","description":"Abstract file storage and upload plugin for CakePHP. Write to local disk, FTP, S3, Dropbox and more through a single interface. It's not just yet another uploader but a complete storage solution.","archived":false,"fork":false,"pushed_at":"2026-04-22T23:44:28.000Z","size":1994,"stargazers_count":10,"open_issues_count":1,"forks_count":3,"subscribers_count":3,"default_branch":"master","last_synced_at":"2026-04-23T01:27:07.855Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"PHP","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":"burzum/cakephp-file-storage","license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/dereuromark.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2020-11-02T22:31:26.000Z","updated_at":"2026-04-22T23:44:31.000Z","dependencies_parsed_at":"2023-12-11T23:18:28.503Z","dependency_job_id":"d5094113-5bba-4044-aab9-bc4a77e84277","html_url":"https://github.com/dereuromark/cakephp-file-storage","commit_stats":{"total_commits":780,"total_committers":35,"mean_commits":"22.285714285714285","dds":0.4525641025641025,"last_synced_commit":"ab95235db1fa4bcb1ba160dbef55640e1c2922f7"},"previous_names":[],"tags_count":50,"template":false,"template_full_name":null,"purl":"pkg:github/dereuromark/cakephp-file-storage","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dereuromark%2Fcakephp-file-storage","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dereuromark%2Fcakephp-file-storage/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dereuromark%2Fcakephp-file-storage/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dereuromark%2Fcakephp-file-storage/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/dereuromark","download_url":"https://codeload.github.com/dereuromark/cakephp-file-storage/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dereuromark%2Fcakephp-file-storage/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32538268,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-02T12:25:33.646Z","status":"ssl_error","status_checked_at":"2026-05-02T12:24:51.733Z","response_time":132,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-08-02T14:00:31.326Z","updated_at":"2026-05-02T15:01:30.495Z","avatar_url":"https://github.com/dereuromark.png","language":"PHP","funding_links":[],"categories":["File Manipulation","Plugins"],"sub_categories":["File Manipulation"],"readme":"# FileStorage Plugin for CakePHP\n\n[![CI](https://github.com/dereuromark/cakephp-file-storage/actions/workflows/ci.yml/badge.svg?branch=master)](https://github.com/dereuromark/cakephp-file-storage/actions/workflows/ci.yml?query=branch%3Amaster)\n[![codecov](https://codecov.io/gh/dereuromark/cakephp-file-storage/branch/master/graph/badge.svg)](https://app.codecov.io/gh/dereuromark/cakephp-file-storage/tree/master)\n[![PHPStan](https://img.shields.io/badge/PHPStan-level%208-brightgreen.svg?style=flat)](https://phpstan.org/)\n[![Latest Stable Version](https://poser.pugx.org/dereuromark/cakephp-file-storage/v/stable.svg)](https://packagist.org/packages/dereuromark/cakephp-file-storage)\n[![Minimum PHP Version](https://img.shields.io/badge/php-%3E%3D%208.2-8892BF.svg)](https://php.net/)\n[![License](https://img.shields.io/badge/license-MIT-brightgreen.svg?style=flat-square)](LICENSE)\n[![Total Downloads](https://poser.pugx.org/dereuromark/cakephp-file-storage/d/total.svg)](https://packagist.org/packages/dereuromark/cakephp-file-storage)\n[![Coding Standards](https://img.shields.io/badge/cs-PhpCollective-purple.svg?style=flat-square)](https://github.com/php-collective/code-sniffer)\n\nThe **FileStorage** plugin is giving you the possibility to upload and store files in virtually any kind of storage backend. The plugin features the [FlySystem](https://github.com/thephpleague/flysystem) library in a CakePHP fashion and provides a simple way to use the storage adapters.\n\nStorage adapters are a unified interface that allow you to store file data to your local file system, in memory, in a database or into a zip file and remote systems. There is a database table keeping track of what you stored where. You can always write your own adapter or extend and overload existing ones.\n\nThis branch is for use with **CakePHP 5.1+**. See [version map](https://github.com/dereuromark/cakephp-file-storage/wiki#cakephp-version-map) for details.\n\n## How it works\n\nThe whole plugin is build with clear [Separation of Concerns (SoC)](https://en.wikipedia.org/wiki/Separation_of_concerns) in mind: A file is *always* an entry in the `file_storage` table from the app perspective. The table is the *reference* to the real place of where the file is stored and keeps some meta information like mime type, filename, file hash (optional) and size as well. Storing the path to a file inside an arbitrary table along other data is considered as *bad practice* because it doesn't respect SoC from an architecture perspective but many people do it this way for some reason.\n\nYou associate the `file_storage` table with your model using the FileStorage model from the plugin via hasOne, hasMany or HABTM. When you upload a file you save it to the FileStorage model through the associations, `Documents.file` for example. The FileStorage model dispatches then file storage specific events, the listeners listening to these events process the file and put it in the configured storage backend using adapters for different backends and build the storage path using a path builder class.\n\n## Admin backend\n\nThe plugin ships a self-contained admin backend at `/admin/file-storage`\n(dashboard, file listing with bulk delete, storage cleanup UI). It is\n**fail-closed by default** — set `FileStorage.adminAccess` (`true` or a\n`Closure(\\Cake\\Http\\ServerRequest): bool`) to opt in. The bundled\nBootstrap 5 layout can be replaced with your host app's layout via\n`FileStorage.adminLayout`. See [docs/Documentation/Installation.md](docs/Documentation/Installation.md#the-admin-backend).\n\nFor background image-variant regeneration from the admin UI, install\n[`dereuromark/cakephp-queue`](https://github.com/dereuromark/cakephp-queue);\nwithout it the regenerate buttons render disabled.\n\n## Documentation\n\nFor documentation, as well as tutorials, see the [docs](docs/) directory of this repository.\n\n## Support\n\nFor bugs and feature requests, please use the [issues](https://github.com/dereuromark/cakephp-file-storage/issues) section of this repository.\n\n## Contributing\n\nTo contribute to this plugin please follow a few basic rules.\n\n* Pull requests must be sent to the branch that reflects the version you want to contribute to.\n* [Unit tests](http://book.cakephp.org/5/en/development/testing.html) are required.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdereuromark%2Fcakephp-file-storage","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdereuromark%2Fcakephp-file-storage","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdereuromark%2Fcakephp-file-storage/lists"}