All Projects → burzum → Cakephp File Storage

burzum / Cakephp File Storage

Licence: mit
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.

Projects that are alternatives of or similar to Cakephp File Storage

S3 Uploader
🍎 macOS Electron+React App for uploading files to S3 directly from Status Bar
Stars: ✭ 119 (-41.09%)
Mutual labels:  s3, storage, upload
Rclone
"rsync for cloud storage" - Google Drive, S3, Dropbox, Backblaze B2, One Drive, Swift, Hubic, Wasabi, Google Cloud Storage, Yandex Files
Stars: ✭ 30,541 (+15019.31%)
Mutual labels:  s3, dropbox, ftp
go-storage
A vendor-neutral storage library for Golang: Write once, run on every storage service.
Stars: ✭ 387 (+91.58%)
Mutual labels:  dropbox, storage, s3
Cyberduck
Cyberduck is a libre FTP, SFTP, WebDAV, Amazon S3, Backblaze B2, Microsoft Azure & OneDrive and OpenStack Swift file transfer client for Mac and Windows.
Stars: ✭ 1,080 (+434.65%)
Mutual labels:  s3, dropbox, ftp
Filestash
🦄 A modern web client for SFTP, S3, FTP, WebDAV, Git, Minio, LDAP, CalDAV, CardDAV, Mysql, Backblaze, ...
Stars: ✭ 5,231 (+2489.6%)
Mutual labels:  s3, dropbox, ftp
Go Storage
An application-oriented unified storage layer for Golang.
Stars: ✭ 87 (-56.93%)
Mutual labels:  s3, storage, dropbox
Cash
HTTP response caching for Koa. Supports Redis, in-memory store, and more!
Stars: ✭ 122 (-39.6%)
Mutual labels:  s3, storage
Vs Deploy
Visual Studio Code extension that provides commands to deploy files of a workspace to a destination.
Stars: ✭ 123 (-39.11%)
Mutual labels:  dropbox, ftp
Uploadcare Widget
Uploadcare Widget, an ultimate tool for HTML5 file upload supporting multiple file upload, drag&drop, validation by file size/file extension/MIME file type, progress bar for file uploads, image preview.
Stars: ✭ 183 (-9.41%)
Mutual labels:  upload, uploader
Noobaa Core
NooBaa is a Dynamic Data Gateway for cloud-native, hybrid and multi cloud environments ☁️🚀
Stars: ✭ 131 (-35.15%)
Mutual labels:  s3, storage
Unifile
Unified access to cloud storage services through a simple web API.
Stars: ✭ 105 (-48.02%)
Mutual labels:  dropbox, ftp
Ghost Storage Adapter S3
An AWS S3 storage adapter for Ghost
Stars: ✭ 128 (-36.63%)
Mutual labels:  s3, storage
Vscode Remote Workspace
Multi protocol support for handling remote files like local ones in Visual Studio Code.
Stars: ✭ 197 (-2.48%)
Mutual labels:  dropbox, ftp
Cakephp Proffer
An upload plugin for CakePHP 3
Stars: ✭ 121 (-40.1%)
Mutual labels:  cakephp, upload
Curldrop
⏫ web app for for easy file uploads via curl
Stars: ✭ 125 (-38.12%)
Mutual labels:  upload, uploader
S3uploader
A minimalistic UI to conveniently upload and download files from AWS S3
Stars: ✭ 111 (-45.05%)
Mutual labels:  s3, uploader
Vscode Deploy Reloaded
Recoded version of Visual Studio Code extension 'vs-deploy', which provides commands to deploy files to one or more destinations.
Stars: ✭ 129 (-36.14%)
Mutual labels:  dropbox, ftp
Uptoc
A static file deployment tool that supports multiple platforms./ 一个支持多家云厂商的静态文件部署工具
Stars: ✭ 159 (-21.29%)
Mutual labels:  s3, storage
Pins
Pin, Discover and Share Resources
Stars: ✭ 149 (-26.24%)
Mutual labels:  s3, storage
Importexportfree
Improve default Magento 2 Import / Export features - cron jobs, CSV , XML , JSON , Excel , mapping of any format, Google Sheet, data and price modification, improved speed and a lot more!
Stars: ✭ 160 (-20.79%)
Mutual labels:  dropbox, ftp

FileStorage Plugin for CakePHP

Software License Build Status Coverage Status Code Quality

If you're upgrading from CakePHP 2.x please read the migration guide.

The File Storage plugin is giving you the possibility to upload and store files in virtually any kind of storage backend. The plugin features the Gaufrette and FlySystem library in a CakePHP fashion and provides a simple way to use the storage adapters through the StorageManager class.

Storage adapters are an 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.

How it works

The whole plugin is build with clear Separation of Concerns (SoC) 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.

You associate the file_storage table with your model using the FileStorage or ImageStorage 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.

List of supported Adapters

  • Apc
  • Amazon S3
  • ACL Aware Amazon S3
  • Azure
  • Doctrine DBAL
  • Dropbox
  • Ftp
  • Grid FS
  • In Memory
  • Local File System
  • MogileFS
  • Open Cloud
  • Rackspace Cloudfiles
  • Sftp
  • Zip File

Supported CakePHP Versions

  • CakePHP 4.x -> 3.0 Branch
  • CakePHP 3.x -> 2.0 Branch
  • CakePHP 2.x -> 1.0 Branch

Requirements

  • PHP 7.2+
  • CakePHP 4.x
  • Gaufrette Storage Library 0.7.x

Optional but required if you want image processing out of the box:

You can still implement whatever file processing you want very easy. It's not tied to Imagine.

Documentation

For documentation, as well as tutorials, see the docs directory of this repository.

Support

For bugs and feature requests, please use the issues section of this repository.

Contributing

To contribute to this plugin please follow a few basic rules.

  • Pull requests must be send to the branch that reflects the version you want to contribute to.
  • Unit tests are required.

License

Copyright Florian Krämer

Licensed under The MIT License Redistributions of files must retain the above copyright notice.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].