Sugierame una forma de guardar una imagen de una URL mediante Paperclip.
                    
                        ruby-on-rails
                                ruby
                                upload
                                paperclip
                                
                    
                    
                        Khanh
fuente
                
                
            fuente

update_attributescambiar el nombrepicture_from_urla,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_streamcomocontent_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
curbgema a aTempFiley 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
superde?superse 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.0y funciona.fuente