Descarga de Archivos desde MyFiles
Los archivos añadidos por el usuario o generados por plugins se almacenan en la carpeta MyFiles. Para descargar estos archivos, no basta con ingresar la ruta en el navegador; es necesario un token de autorización para evitar que terceros accedan a información sensible de la empresa.
🔓 Excepción en MyFiles/Public
Hay una excepción: los archivos almacenados en la carpeta MyFiles/Public pueden ser descargados sin necesidad de un token.
🔐 Obtención del Token
Para descargar archivos almacenados en la carpeta MyFiles, debemos invocar la clase MyFilesToken y utilizar el método get() para obtener el token de descarga.
Ejemplo de cómo obtener la URL de descarga
Nota: La ruta del archivo no debe comenzar con /.
$path = 'MyFiles/archivo.pdf';
$url = $path . '?myft=' . MyFilesToken::get($path, true);
La función get() acepta un segundo parámetro booleano (true o false):
- Si se establece en true, el token permitirá descargar el archivo en cualquier momento, obteniendo así un token con validez permanente.
- Si se establece en false, el archivo solo podrá descargarse durante el mismo día. A las 00:00 horas, el token dejará de ser válido.
📅 Fecha de Vencimiento Concreta
Si desea obtener un token que caduque más allá del mismo día, por ejemplo, en una semana, puede especificar la fecha de vencimiento como tercer parámetro:
$path = 'MyFiles/archivo.pdf';
$url = $path . '?myft=' . MyFilesToken::get($path, false, '11-11-2026');
Este token expirará el 11 de noviembre de 2026.
📃 Obtener el Token desde una Plantilla Twig
Si tenemos la ruta del archivo y deseamos obtener la URL con el token directamente desde la vista, podemos utilizar la función myFilesUrl():
<a href="{{ myFilesUrl(ruta) }}">Descargar</a>