rails que instalar gemas ruby-on-rails ruby file-handling

ruby on rails - que - ¿Cómo puedo descargar un archivo desde una URL y guardarlo en Rails?



instalar gemas de ruby en windows (5)

Consulte Net::HTTP en la biblioteca estándar. La documentación proporciona varios ejemplos sobre cómo descargar documentos utilizando HTTP.

Tengo una URL para una imagen que quiero guardar localmente, de modo que pueda usar Paperclip para producir una miniatura para mi aplicación. ¿Cuál es la mejor manera de descargar y guardar la imagen? (Miré en el manejo de archivos ruby ​​pero no encontré nada).


Creo que esta es la manera más clara:

require ''open-uri'' File.write ''image.png'', open(''http://example.com/image.png'').read


Prueba esto:

require ''open-uri'' open(''image.png'', ''wb'') do |file| file << open(''http://example.com/image.png'').read end


Si está utilizando PaperClip, la descarga desde una URL ahora se maneja automáticamente.

Suponiendo que tienes algo como:

class MyModel < ActiveRecord::Base has_attached_file :image, ... end

En su modelo, simplemente especifique la imagen como una URL, algo así (escrito a mano deliberadamente):

@my_model = MyModel.new image_url = params[:image_url] @my_model.image = URI.parse(image_url)

Probablemente quieras poner esto en un método en tu modelo. Esto también funcionará bien en el sistema de archivos temporal de Heroku.

Paperclip lo tomará desde allí.

fuente: documentación del clip


Una versión aún más corta:

require ''open-uri'' download = open(''http://example.com/image.png'') IO.copy_stream(download, ''~/image.png'')

Para mantener el mismo nombre de archivo:

IO.copy_stream(download, "~/#{download.base_uri.to_s.split(''/'')[-1]}")