Saltar al contenido

¿Cómo puedo descargar un archivo desde una URL y guardarlo en Rails?

Solución:

Prueba esto:

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

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("https://foroayuda.es/")[-1]}")

Si está utilizando PaperClip, la descarga desde una URL ahora se gestiona 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 como esto (escrito a mano deliberadamente):

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

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

Paperclip lo llevará desde allí.

fuente: documentación del clip

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *