Symfony 4 - VichUploader может удалить файл?

в моем проекте Symfony 4, когда пользователь загружает файл, я хотел бы заменить атрибут файла $user.

Поэтому я хотел бы удалить предыдущий файл и заменить его новым.

Я нашел это: https://github.com/dustin10/VichUploaderBundle/blob/ed88af73ab04a5c4908baffad009bc1e47631a01/Storage/AbstractStorage.php#L84

Функция :

public function remove($obj, PropertyMapping $mapping)
{
    $name = $mapping->getFileName($obj);
    // the non-strict comparison is done on purpose: we want to skip
    // null and empty filenames
    if (null == $name) {
        return false;
    }
    return $this->doRemove($mapping, $mapping->getUploadDir($obj), $name);
}

Но как я могу использовать его в своем сервисе для замены файлов?


person kiuega    schedule 09.09.2019    source источник


Ответы (1)


Настройте события жизненного цикла, предоставляемые Vich:

# config/packages/vich_uploader.yaml or app/config/config.yml
vich_uploader:
    db_driver: orm
    mappings:
        product_image:
            uri_prefix: /images/products
            upload_destination: '%kernel.project_dir%/public/images/products'

            inject_on_load: false
            delete_on_update: true
            delete_on_remove: true

Обратите внимание на параметры delete_on_update и delete_on_remove.

https://github.com/dustin10/VichUploaderBundle/blob/master/docs/usage.md#step-3-configure-the-lifecycle-events-Optional-Step

person Jeroen    schedule 11.09.2019