Member-only story
Cómo Sanitizar Un Nombre De Archivo En Drupal
Usando event subscriber
Al agregar un campo para subir archivos que usarán los usuarios, no debes esperar que suban archivos con nombres que no contengan caracteres extraños o espacios, porque a menudo lo harán.
En la mayoría de los casos, puedes simplemente usar el módulo de transliteration (https://www.drupal.org/project/transliteration), Y eso lo solucionará. Pero si, como en mi caso, necesitas cambiar el nombre de los archivos a un formato específico, es posible que quieras crear tu propio event subscriber.
Para ello, sigue estos pasos (reemplazando module_name con el nombre real de tu módulo):
- Crea el fichero modules/custom/module_name/module_name.services.yml:
module_name.file_upload_subscriber:
class: Drupal\module_name\EventSubscriber\FileUploadSubscriber
arguments: ['@transliteration']
tags:
- { name: event_subscriber }
2. Crea el fichero modules/custom/module_name/src/EventSubscriber/FileUploadSubscriber.php:
<?php
namespace Drupal\module_name\EventSubscriber;
use Drupal\Core\File\Event\FileUploadSanitizeNameEvent;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
use Drupal\Component\Transliteration\TransliterationInterface;
class FileUploadSubscriber implements…