¿Cómo puedo almacenar programáticamente una imagen en una ubicación de acceso público en mi sitio de Drupal?
-
23-09-2019 - |
Pregunta
Estoy escribiendo un módulo Drupal donde los usuarios envían contenido (formateado como HTML). El contenido casi siempre incluirá <img>
Etiquetas. Esas etiquetas harán referencia al servidor del usuario. Pero no quiero presionar al servidor del usuario cada vez que se solicite ese contenido; Quiero servir una versión en mi servidor.
Entonces, he escrito una función para buscar el HTML para <img>
Etiquetas y luego use curl para guardarlas localmente. Todo está bien, excepto que no puedo entender en qué parte del sistema de archivos local almacenar las imágenes, gracias a la loca reescritura de URL de Drupal. Idealmente, podría ponerlos en un directorio que ya esté accesible en la web y no tener que crear directorios nuevos.
¿Alguna idea?
Tia,
Benjy
PD: No es realmente factible usar un ImageField
Como necesito mostrar la imagen en línea. ¡Gracias!
Solución
En teoría, deberías poder ponerlos en cualquier lugar bajo la raíz web, y serán serviciales, pero normalmente, las imágenes de contenido (a diferencia de las imágenes del tema) van en tu files
directorio, que generalmente se configura como /sites/default/files
. Por lo general, pongo una subcarpeta para agregar algo de estructura, por lo que los pondría en /sites/default/files/images/scraped
(o lo que sea).
Nota: puede obtener la ruta del archivo con file_directory_path. También puede mirar el API de manejo de archivos.
Otros consejos
¿Por qué no lo pones en el directorio de Drupal? Por defecto, sitios/predeterminado/archivos