ruby-on-rails - rails - remove image carrierwave
Carga de una URL de archivo remoto desde Rails Console con Carrierwave (5)
Solo quería saber cómo se cargaría una url de archivo remoto usando Carrierwave en la consola de Rails.
Intenté lo siguiente sin suerte. Supongo que no está procesando el cargador?
user = User.first
user.remote_avatar_url = "http://www.image.com/file.jpg"
user.save
Muchas gracias
Eche un vistazo a la sección '' Carga de archivos desde una ubicación remota '' en esta página https://github.com/carrierwaveuploader/carrierwave
CarrierWave debe lanzar un error si la URL de la ubicación no es válida
2.1.3 :015 > image.remote_image_url = "http"
=> "http"
2.1.3 :016 > image.save!
(0.2ms) BEGIN
(0.2ms) ROLLBACK
ActiveRecord::RecordInvalid: Validation failed: Image trying to download a file which is not served over HTTP
O si es un host desconocido:
2.1.3 :017 > image.remote_image_url = "http://foobar"
=> "http://foobar"
2.1.3 :018 > image.save!
(0.4ms) BEGIN
(0.4ms) ROLLBACK
ActiveRecord::RecordInvalid: Validation failed: Image could not download file: getaddrinfo: nodename nor servname provided, or not known
También tenga en cuenta que si desea descargar imágenes remotas, debe remote_
el prefijo remote_
y _url
con _url
, como se muestra en el ejemplo
Es trabajo como:
url=''http://host.domain/file.jpg''
time=Time.now.to_i.to_s
myfile=IO.sysopen("tmp/"+time+"_img."+url.split(".").last,"wb+")
tmp_img=IO.new(myfile,"wb")
tmp_img.write open(URI.encode(url)).read
if File.exist?("tmp/"+time+"_img."+url.split(".").last)
"tmp/"+time+"_img."+url.split(".").last
image = ActionDispatch::Http::UploadedFile.new(:tempfile => tmp_img, :filename => File.basename(tmp_img))
else
image=nil
end
@your_model.image=image
@your_model.save
Estaba enfrentando el mismo problema. y el problema podría ser http está redirigiendo a https. Así que los reemplacé usando gsub de la siguiente manera:
image.remote_image_url = remote_image_url.gsub(''http://'',''https://'')
image.save!
esto probablemente debería resolver el problema.
He tenido problemas con remote_avatar_url al no subir la imagen o arrojar ningún error. Para mí, hasta donde puedo decir, fue porque establecí lo siguiente en mi modelo.
attr_accessor :remote_avatar_url
Carrierwave cubre esto para usted, y aunque no entiendo por qué, configurarlo usted mismo molesta las cosas.
user = User.first
user.remote_avatar = File.open(FILE_LOCATION)
user.save
FILE_LOCATION puede ser
File.join(Rails.root, ''/files/png-sample.png'')
si el archivo se encuentra en una carpeta ''archivos'' en el proyecto de rieles