Sugierame una forma de guardar una imagen de una URL mediante Paperclip.
ruby-on-rails
ruby
upload
paperclip
Khanh
fuente
fuente
update_attributes
cambiar el nombrepicture_from_url
a,picture_url=(value)
por ejemplo.user.picture_from_url('/etc/password')
. Sin embargo, probablemente esté bien en la mayoría de las situaciones.open(url)
, el nombre del archivo no es exacto, por ejemplo, enopen-uri20150106-10034-lpd5fm.
lugar deef3a601e_ef3d008b_ef3d0f7e.jpg
.En Paperclip 3.1.4 se ha vuelto aún más sencillo.
Esto es un poco mejor que abierto (url). Porque con open (url) obtendrás "stringio.txt" como nombre de archivo. Con lo anterior, obtendrá un nombre adecuado del archivo según la URL. es decir
fuente
application/octet_stream
comocontent_type
.No funcionó para mí hasta que usé "abierto" para el URI analizado. una vez que agregué "abrir" ¡funcionó!
La versión de mi clip es 4.2.1
Antes de abrir, no detectaría el tipo de contenido correcto, porque no era un archivo. Diría image_content_type: "binary / octet-stream", e incluso si lo anulo con el tipo de contenido correcto, no funcionaría.
fuente
Primero descargue la imagen con la
curb
gema a aTempFile
y luego simplemente asigne el objeto del archivo temporal y guarde su modelo.fuente
Puede resultarle útil. Aquí está el código que usa un clip y una imagen presente en una URL remota.
En modelo
fuente
Como son respuestas antiguas, aquí hay una más nueva:
Agregue la URL remota de imagen a su controlador deseado en la base de datos
Edita tu modelo
* En Rails4 debes agregar attr_accessible en el controlador.
Actualice su formulario, si permite que otros carguen una imagen desde una URL
fuente
super
de?super
se usa para invocar el método original, la búsqueda del cuerpo del método comienza en la superclase del objeto que se encontró que contenía el método originalEste es un método duro:
donde Uuid.uuid solo crea una identificación aleatoria.
fuente
En la documentación oficial se informa aquí https://github.com/thoughtbot/paperclip/wiki/Attachment-downloaded-from-a-URL
De todos modos parece no actualizado, porque en la última versión del clip algo ha cambiado y esta línea de código ya no es válida:
Genera un error, en particular se genera este error:
La nueva sintaxis correcta es esta:
También necesitamos agregar estas líneas en el archivo config / initializers / paperclip.rb :
Probé esto con la versión de clip
5.3.0
y funciona.fuente