PHPackages                             ccasanovas/cake-s3upload - 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. ccasanovas/cake-s3upload

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

ccasanovas/cake-s3upload
========================

S3UploadSDK plugin for CakePHP

1.0.4(3y ago)051MITPHP

Since Feb 20Pushed 3y ago1 watchersCompare

[ Source](https://github.com/ccasanovas/cake-s3upload)[ Packagist](https://packagist.org/packages/ccasanovas/cake-s3upload)[ RSS](/packages/ccasanovas-cake-s3upload/feed)WikiDiscussions master Synced today

READMEChangelog (3)Dependencies (4)Versions (5)Used By (1)

S3UploadSDK plugin para CakePHP
-------------------------------

[](#s3uploadsdk-plugin-para-cakephp)

Este plugin permite rapidamente hacer que una Table suba archivos a un bucket de AWS S3, mediante el behavior proporcionado.

---

Changelog
---------

[](#changelog)

Fecha: 2020-11-24

- Arreglado alerta de deprecated en behavior

Fecha: 2019-03-25

- Arreglado bug que hacia que los archivos se subieran a S3 como texto plano

Fecha: 2018-11-20

- Agregada funcionalidad para eliminar archivos cuando están en la misma tabla

Fecha: 2018-10-11

- Reescrita la documentación

---

Documentación
-------------

[](#documentación)

### Funcionalidades

[](#funcionalidades)

**Implementadas:**

- Incluye un behavior para las tablas que deban subir archivos, S3UploadSDK, con las siguientes funcionalidades:
    - Sube archivos al bucket de s3 configurado
    - Almacena en la base de datos los campos de metadatos asi como también la URL completa del archivo.
    - Permite fácilmente configurar el archivo a subir como sólo imagen
    - Provee varios validadores preconfigurados para integrarlos rapidamente
    - Permite togglear para que los archivos se suban localmente
    - Método de utilidad para eliminar archivos de la tabla sin borrar el row completo.

**Pendientes:**

- Permitir configurar varios buckets a la vez

### Instalación

[](#instalación)

Para obtener el plugin con **composer** se requiere agregar a `composer.json` lo siguiente:

1. Al objeto `"require"`, agregar el plugin: `"ccasanovas/cake-s3upload": "dev-master"`
2. Al arreglo de `"repositories"` agregar el objeto: `{"type": "vcs", "url": "git@bitbucket.org:ccasanovas/cake-s3upload.git"}`
3. correr `composer update`

NOTA: asegurarse de tener los permisos de acceso/deploy correctos en el repositorio.

Una vez instalado el plugin en el repositorio se puede agregar a las tablas necesarias el behavior:

```
$this->loadBehavior('Ccasanovas/S3UploadSDK.S3UploadSDK', [
    /* Nombre del campo principal, donde se guardará el nombre del archivo: */
    'avatar_file_name' => [
        /* Estos campos se almacenarán en la base de datos: */
        'fields' => [
            /* campos requeridos: */
            'dir'  => 'avatar_file_dir', //el directorio del archivo
            'size' => 'avatar_file_size', //el tamaño del archivo en bytes
            'type' => 'avatar_file_type', //el mime type del archivo
            'url'  => 'avatar_url', //la dirección completa del archivo una vez subido

            /* campos opcionales usados para imagenes: */
            'image_width'  => 'avatar_width', //ancho de la imagen
            'image_height' => 'avatar_height' //alto de la imagen
        ],
        /*  si el campo se configura como images_only,
            se agregará validación para asegurar que solo se suban imagenes
        */
        'images_only' => true
    ]
]);
```

### Estructura

[](#estructura)

#### Ccasanovas\\S3UploadSDK\\Model\\Behavior\\AwsS3UploadBehavior

[](#ccasanovass3uploadsdkmodelbehaviorawss3uploadbehavior)

- *public* **initialize**(array $config)
    - Comprueba que las variables de configuracion necesarias estén disponibles y sean correctos
    - Construye y configura el cliente para interactuar con S3
    - Le agrega el adaptador de s3 y un path por defecto a todos los campos configurados en el modelo
    - Una vez procesadas las configuraciones de los campos, agrega el behavior 'Josegonzalez/Upload.Upload' a la Table y se las pasa
- *public* **buildValidator**(Event $event, Validator $validator, $name)
    - Para cada uno de los campos configurados, agrega reglas de validación estandar para el tipo de archivo
    - Incluye las siguientes reglas:
        - fileUnderPhpSizeLimit
        - fileUnderFormSizeLimit
        - fileCompletedUpload
        - fileFileUpload
        - fileSuccessfulWrite
    - Además, si el campo está configurado con `['images_only' => true]`, agrega validación para el mimeType, aceptando solo los siguientes:
        - image/gif
        - image/png
        - image/jpg
        - image/jpeg
- *public* **afterRules**(Event $event, EntityInterface $entity, ArrayObject $options, $result, $operation)
    - Si los campos de alto y ancho están configurados, intenta obtener esas propiedades del archivo y popular esos campos
- *public* **beforeSave**(Event $event, EntityInterface $entity, ArrayObject $options)
    - almancena la url completa del archivo subido a S3 en el campo de url
    - Si se está borrando el archivo, se encarga de limpiar los campos relacionados también (dir, type, size, etc)
- *public* **deleteFile**($id, $field)
    - Método de utilidad para borrar el $field de la entidad. Junto con el beforeSave, se puede llamar por ejemplo a `$this->Products->deleteFile($product_id, 'file_name');` y se borrará el contenido de `file_name` y sus campos relacionados (por ej: file\_dir, file\_size, file\_type, etc).

### Variables de configuracion

[](#variables-de-configuracion)

Las variables de configuración se guardan en el arreglo de configuración de la aplicación al igual que el resto de las configuraciones (`config/app.php` por defecto).

Las configuraciones disponibles son:

```
'AwsS3' => [
    'base_url' => 'https://s3.amazonaws.com',
    'key'      => '', //required.
    'secret'   => '', //required.
    'region'   => 'us-east-1', //required. region the bucket is it
    'bucket'   => 'test-bucket-name', //required. name of the bucket
    'prefix'   => 'path/to/test/prefix' //optional. Appends this path to all s3 object address.

    /*  Campo opcional. Por defecto false. se puede poner explicitamente
        como true para que no se use s3 y en su lugar se almacene localmente.
        Util para testing.
    */
    'local_only' => false,
]
```

### Testing

[](#testing)

//TODO

###  Health Score

23

—

LowBetter than 26% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity4

Limited adoption so far

Community9

Small or concentrated contributor base

Maturity53

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

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 ~116 days

Total

4

Last Release

1244d ago

### Community

Maintainers

![](https://avatars.githubusercontent.com/u/52657992?v=4)[Cristian Casanovas](/maintainers/ccasanovas)[@ccasanovas](https://github.com/ccasanovas)

---

Top Contributors

[![ccasanovas](https://avatars.githubusercontent.com/u/52657992?v=4)](https://github.com/ccasanovas "ccasanovas (5 commits)")

###  Code Quality

TestsPHPUnit

### Embed Badge

![Health badge](/badges/ccasanovas-cake-s3upload/health.svg)

```
[![Health](https://phpackages.com/badges/ccasanovas-cake-s3upload/health.svg)](https://phpackages.com/packages/ccasanovas-cake-s3upload)
```

###  Alternatives

[cakephp/bake

Bake plugin for CakePHP

11212.0M199](/packages/cakephp-bake)[dereuromark/cakephp-queue

The Queue plugin for CakePHP provides deferred task execution.

308954.9k25](/packages/dereuromark-cakephp-queue)[dereuromark/cakephp-ide-helper

CakePHP IdeHelper Plugin to improve auto-completion

1882.3M43](/packages/dereuromark-cakephp-ide-helper)[craftcms/aws-s3

Amazon S3 integration for Craft CMS

631.5M28](/packages/craftcms-aws-s3)[dereuromark/cakephp-tinyauth

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

131240.2k13](/packages/dereuromark-cakephp-tinyauth)[dereuromark/cakephp-setup

A CakePHP plugin containing lots of useful management tools

36199.6k2](/packages/dereuromark-cakephp-setup)

PHPackages © 2026

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