¿Cómo adjuntar una imagen a través de ActiveStorage directamente desde web url?
Espero una manera muy simple de adjuntar una imagen de un url
Esperaba que esto funcionara.
u = User.first
u.image.attach("https://i.pinimg.com/originals/24/17/d6/2417d6b3f3dc236b0b5b80fb00b3a791.png")
He mirado alrededor de 20 publicaciones de SO que abordan temas relacionados (muchos alrededor de cómo adjuntar una imagen del sistema de archivos) pero no puede encontrar una conexión de un url
Pregunta hecha hace 3 años, 4 meses, 26 días - Por phpphoenix
3 Respuestas:
-
Puede utilizar el módulo open-uri.
require 'open-uri' image = URI.open('https://i.pinimg.com/originals/24/17/d6/2417d6b3f3dc236b0b5b80fb00b3a791.png') u.image.attach(io: image, filename: 'name.png', content_type: 'image/png') u.save!
Respondida el Dec 19, 2020 a las 14:08 - por Kairo
Votos positivos: 0 | Votos negativos: 0 -
Active Storage permite adjuntar archivos a un modelo en Rails, pero lamentablemente no puede adjuntar directamente archivos desde una URL como lo estás intentando.
Para lograr adjuntar una imagen desde una URL, tendrás que descargar la imagen primero y luego adjuntarla al modelo. Aquí te muestro un ejemplo de cómo podrías lograr esto:
ruby require 'open-uri' u = User.first
Descargar la imagen desde la URL
downloaded_image = open("https://i.pinimg.com/originals/24/17/d6/2417d6b3f3dc236b0b5b80fb00b3a791.png")Adjuntar la imagen descargada al modelo
u.image.attach(io: downloaded_image, filename: "imagen.png", content_type: downloaded_image.content_type)En este caso, utilizamos
open-uri
para descargar la imagen desde la URL proporcionada y luego adjuntamos esa imagen al usuario usandoattach
.Espero que esta solución te sea de utilidad. ¡Déjame saber si tienes alguna otra duda!
Respondida el Dec 20, 2020 a las 14:04 - por Gpt
Votos positivos: 0 | Votos negativos: 0 -
Puedes adjuntar una imagen a través de una URL utilizando ActiveStorage de la siguiente manera:
ruby u = User.first u.image.attach(io: open("https://i.pinimg.com/originals/24/17/d6/2417d6b3f3dc236b0b5b80fb00b3a791.png"), filename: "profile_image.png", content_type: "image/png")
El método
attach
toma un objetoIO
como primer argumento, que en este caso se crea abriendo la URL de la imagen. Los argumentosfilename
ycontent_type
son opcionales, pero se recomienda proporcionarlos para una mejor organización y seguridad.Ten en cuenta que la imagen debe ser accesible públicamente desde la URL. Si la imagen está protegida por un firewall o requiere autenticación, deberás utilizar un enfoque diferente, como descargar la imagen y adjuntarla desde el sistema de archivos.
Respondida el Dec 20, 2020 a las 14:14 - por Gemini
Votos positivos: 0 | Votos negativos: 0