File Entity (archivos con campos)
Extiende las entidades de archivo de Drupal para que sean configurables con campos y visualizables, permitiendo organizar los archivos en tipos con campos personalizados, modos de visualización y formateadores.
file_entity
Install
composer require 'drupal/file_entity:8.x-2.3'
composer require 'drupal/file_entity:8.x-2.0'
Overview
File Entity es un módulo integral que transforma la entidad de archivo del núcleo de Drupal en una entidad de contenido completamente funcional. Permite que los archivos tengan campos personalizados adjuntos a través de Field UI, se organicen en tipos (bundles) basados en el tipo MIME y se muestren usando varios modos de visualización y formateadores de campo.
El módulo proporciona tipos de archivo integrados para imágenes, audio, video y documentos, cada uno clasificando automáticamente los archivos subidos según su tipo MIME. Incluye formateadores de audio y video HTML5, soporte para imágenes responsivas y formateadores de enlaces de descarga con soporte de tokens para texto de enlace dinámico.
File Entity se integra profundamente con el ecosistema de Drupal, proporcionando integración con Views para listado y filtrado de archivos, soporte de Token API para texto alt/title dinámico, integración opcional con Pathauto para alias de URL de archivos, y normalizadores REST/HAL API para implementaciones headless de Drupal.
Features
- Entidades de archivo con campos - adjunta cualquier tipo de campo de Drupal a los archivos usando Field UI
- Bundles de tipos de archivo (Image, Audio, Video, Document) con clasificación automática por tipo MIME
- Tipos de archivo personalizados con patrones de tipo MIME configurables
- Asistente de carga de archivos en múltiples pasos con selección de tipo, esquema de destino y configuración de campos
- Formateador de reproductor de audio HTML5 con controles, reproducción automática y opciones de bucle
- Formateador de reproductor de video HTML5 con controles, reproducción automática, bucle, silenciado y configuración de dimensiones
- Formateador de imagen responsiva compatible con estilos de imagen responsivos
- Formateador de enlace de descarga con texto de enlace personalizable compatible con tokens
- Formateador de tamaño de archivo que muestra tamaños legibles para humanos
- Widget de edición de archivos en línea con diálogo modal AJAX
- Funcionalidad de carga y extracción de archivos comprimidos
- Almacenamiento de metadatos de archivos (dimensiones de imagen, etc.) en tabla de base de datos dedicada
- Control de acceso granular basado en propiedad del archivo, tipo y stream wrapper
- Permisos dinámicos por tipo de archivo (editar/eliminar/descargar propios/cualquiera)
- Integración con Views con campos personalizados, filtros y argumentos para gestión de archivos
- Integración con Token API para atributos alt y title dinámicos en imágenes
- Integración con Pathauto para alias de URL de archivos
- Normalizadores REST y HAL API para Drupal headless con contenido de archivo en base64
- Acciones masivas para eliminar, establecer como permanente y establecer como temporal
- Vista de seguimiento de uso de archivos que muestra dónde se usa cada archivo
- Sugerencias de tema basadas en tipo de archivo, tipo MIME y modo de visualización
Use Cases
Biblioteca de medios con metadatos personalizados
Utilice File Entity para crear una biblioteca de medios enriquecida donde las imágenes tengan campos personalizados para créditos del fotógrafo, información de derechos de autor y términos de licencia. Los archivos de audio pueden tener campos para artista, álbum y duración. Los archivos de video pueden almacenar resolución, información de códec y transcripciones.
Sistema de gestión de documentos
Implemente un flujo de trabajo de gestión de documentos donde los documentos cargados se clasifiquen automáticamente por tipo. Agregue campos para versión del documento, estado de aprobación, departamento y fecha de vencimiento. Use Views para crear listados de documentos filtrados por departamento o estado.
Visualización de medios multiformato
Use los formateadores de audio y video HTML5 para mostrar archivos multimedia con reproductores nativos del navegador. Configure las opciones de reproducción automática, controles y bucle. Para imágenes, use formateadores de imágenes responsivas para servir imágenes con tamaño óptimo según la ventana gráfica del dispositivo.
Distribución segura de archivos
Almacene archivos sensibles en el sistema de archivos privado y use permisos granulares para controlar el acceso. Cree tipos de archivo para diferentes niveles de sensibilidad, cada uno con permisos de descarga específicos. Rastree el uso de archivos para auditar qué contenido utiliza archivos específicos.
API de medios Drupal headless
Use los normalizadores HAL/REST para exponer entidades de archivo a través de una API REST. El contenido del archivo se codifica automáticamente en base64 para la transferencia. Las aplicaciones frontend pueden cargar archivos publicando contenido codificado en base64 a través de la API.
Importación masiva de archivos desde archivos comprimidos
Use la funcionalidad de carga de archivos comprimidos para importar múltiples archivos a la vez. Cargue un archivo ZIP que contenga imágenes, y File Entity extraerá todos los archivos que coincidan con un patrón regex, creando entidades de archivo individuales para cada uno con clasificación automática de tipo.
Tips
- Use patrones de token como [file:field_image_alt_text:value] para texto alt dinámico en imágenes para mejorar la accesibilidad y el SEO.
- Cree tipos de archivo personalizados para casos de uso específicos (por ejemplo, 'Podcast', 'Infografía') con campos y permisos dedicados.
- Use las opciones 'Skip' en la configuración de archivos para agilizar el asistente de carga en sitios con un solo tipo de archivo o ubicación de almacenamiento.
- Configure el widget 'Editable file' en campos de archivo/imagen para permitir la edición en línea sin salir del formulario de la entidad principal.
- Aproveche la vista de uso de archivos en /file/{fid}/usage para auditar dónde se están usando los archivos antes de eliminarlos.
- Para mejor rendimiento, use el formateador 'File Size' para mostrar tamaños de archivo en lugar de preprocesamiento personalizado.
- Al usar imágenes responsivas, asegúrese de que el estilo de imagen responsiva esté configurado antes de seleccionarlo en la configuración del formateador.
Technical Details
Admin Pages 11
/admin/structure/file-types
Gestiona los tipos de archivo (bundles) utilizados para organizar y clasificar archivos en tu sitio. Cada tipo de archivo puede coincidir con tipos MIME específicos y tener su propio conjunto de campos personalizados.
/admin/structure/file-types/add
Crea un nuevo tipo de archivo definiendo su etiqueta, nombre de máquina, descripción y tipos MIME asociados.
/admin/structure/file-types/manage/{file_type}/edit
Modifica la configuración de un tipo de archivo existente, incluyendo la etiqueta, descripción y asociaciones de tipos MIME.
/admin/config/media/file-settings
Configura los ajustes globales de la entidad de archivo, incluyendo límites de subida, extensiones permitidas, atributos alt/title predeterminados y comportamiento del asistente de subida.
/admin/content/files
Visualiza, gestiona y realiza operaciones masivas en todos los archivos subidos al sitio. Filtra por nombre de archivo, tipo MIME, estado y tipo de archivo.
/file/add
Asistente de múltiples pasos para subir archivos. Los pasos incluyen subida de archivo, selección de tipo de archivo (si coinciden múltiples tipos), selección de esquema de destino (si hay múltiples esquemas disponibles) y configuración de campos adicionales.
/admin/content/files/archive
Sube y extrae archivos comprimidos (ZIP, TAR, etc.) para crear múltiples entidades de archivo a la vez.
/file/{file}
Visualiza una entidad de archivo con su presentación renderizada usando el modo de visualización configurado para el tipo de archivo.
/file/{file}/edit
Edita los campos de una entidad de archivo y opcionalmente reemplaza el archivo con una nueva subida.
/file/{file}/usage
Visualiza todas las entidades que hacen referencia a este archivo, mostrando la etiqueta de la entidad, el tipo de entidad, el módulo que registró el uso y el contador de uso.
/file/{file}/download
Descarga el archivo con las cabeceras apropiadas y validación opcional de token HMAC para descargas seguras.
Permissions 14
Hooks 7
hook_file_type
Decide qué tipo de archivo (bundle) debe asignarse a una entidad de archivo basándose en lógica personalizada.
hook_file_type_alter
Modifica la lista de tipos de archivo que pueden asignarse a un archivo, permitiendo modificar la prioridad de asignación de tipos.
hook_file_download_headers_alter
Modifica los encabezados HTTP enviados cuando se descarga un archivo.
hook_file_transfer
Reacciona cuando un archivo está siendo descargado o transferido, útil para redirecciones o registro de actividad.
hook_file_metadata_info
Proporciona información de metadatos para entidades de archivo.
hook_file_metadata_info_alter
Modifica la información de metadatos definida por otros módulos.
hook_query_file_entity_access_alter
Controla el acceso a listados de archivos modificando la consulta de base de datos.
Troubleshooting 5
Ejecute cron para procesar la cola de determinación de tipos de archivo. Durante la instalación, los archivos existentes se ponen en cola para clasificación. Verifique Informes > Informe de estado para ver los elementos restantes en la cola.
Verifique los patrones de tipo MIME configurados para cada tipo de archivo en Administración > Estructura > Tipos de archivo. Asegúrese de que el tipo MIME del archivo cargado coincida con uno de los patrones. Use comodines (por ejemplo, image/*) para una coincidencia más amplia.
Verifique que el usuario tenga el permiso apropiado 'download any [type] files' o 'download own [type] files'. También verifique el permiso 'view private files' para el acceso al stream wrapper privado.
Asegúrese de que el módulo Token esté instalado y configure los patrones de token para alt/título en Administración > Configuración > Medios > Configuración de archivos. Para imágenes, cree los campos field_image_alt_text y field_image_title_text en el tipo de archivo de imagen.
El reemplazo de archivos solo funciona para archivos almacenados en stream wrappers con permisos de escritura. Verifique si el archivo usa un stream wrapper local. Los stream wrappers remotos o de solo lectura no admiten el reemplazo de archivos.
Security Notes 5
- El permiso 'bypass file access' solo debe otorgarse a roles de administrador de plena confianza, ya que omite todas las restricciones de acceso a archivos.
- Los archivos privados están protegidos por verificaciones de acceso del stream wrapper. Asegúrese de que los permisos apropiados estén configurados para ver y descargar archivos privados.
- Las descargas de archivos incluyen validación de token HMAC por defecto. No habilite 'allow_insecure_download' a menos que sea específicamente necesario.
- Revise cuidadosamente los permisos de tipos de archivo: los permisos específicos por tipo permiten un control granular sobre quién puede editar, eliminar y descargar tipos específicos de archivos.
- Tenga precaución con la función de carga de archivos comprimidos: asegúrese de que solo usuarios de confianza tengan acceso para prevenir posibles problemas de seguridad con los archivos extraídos.