FriendsOfCake/cakephp-upload

Solved: Using transformer does not upload video and entity isn't saved

magic-77 opened this issue · 1 comments

josegonzalez/cakephp-upload Version: 4.0.2
CakePHP 3.9.2

I'm using one field "media" to upload either an Image or Video
For the Image i need to use an "transformer"
But as soon i try to upload an video nothing happen. No Error is Thrown

$this->addBehavior('Josegonzalez/Upload.Upload', [
            'media' => [
                'path' => 'webroot{DS}uploads{DS}saved_searches{DS}',
                'keepFilesOnDelete' => false,
                'restoreValueOnFailure' => false,
                'nameCallback' => function (RepositoryInterface $table, EntityInterface $entity, $data, $field, $settings) {
                    $extension = pathinfo($data['name'], PATHINFO_EXTENSION);
                    $filename = $this->sanitizeFileName(pathinfo($data['name'], PATHINFO_FILENAME), uniqid());

                    return $filename . '.' . $extension;
                },
                'transformer' => function (RepositoryInterface $table, EntityInterface $entity, $data, $field, $settings) {
                    $filename = pathinfo($data['name'], PATHINFO_FILENAME);
                    $extension = pathinfo($data['name'], PATHINFO_EXTENSION);
                    $tmp = tempnjosegonzalez/cakephp-uploadam(sys_get_temp_dir(), 'ss_upload') . '.' . $extension;

                    if ($extension == 'jpg' || $extension == 'jpeg') {
                        $targetWidth = 1800;
                        $targetHeight = 684;

                        $size = new Box($targetWidth, $targetHeight);
                        $mode = ManipulatorInterface::THUMBNAIL_INSET;
                        $imagine = new Imagine();

                        $imagine->open($data['tmp_name'])
                            ->thumbnail($size, $mode)
                            ->save($tmp);
                    }

                    return [
                        $tmp => $filename . '.' . $extension,
                    ];
                },
            ]
        ]);

Removing the "transformer" will upload video and save entity

$this->addBehavior('Josegonzalez/Upload.Upload', [
            'media' => [
                'path' => 'webroot{DS}uploads{DS}saved_searches{DS}',
                'keepFilesOnDelete' => false,
                'restoreValueOnFailure' => false,
                'nameCallback' => function (RepositoryInterface $table, EntityInterface $entity, $data, $field, $settings) {
                    $extension = pathinfo($data['name'], PATHINFO_EXTENSION);
                    $filename = $this->sanitizeFileName(pathinfo($data['name'], PATHINFO_FILENAME), uniqid());

                    return $filename . '.' . $extension;
                }
            ]
        ]);

I could solve it be returning a proper Array

return [
    $data['tmp_name'] => $data['name'],
];