Как я могу скачать изображение с URL в рельсах и сохранить его на локальном диске (компьютере)? - PullRequest
0 голосов
/ 21 января 2019

У меня есть форма для добавления URL-адреса изображения Форма . Если пользователь добавляет URL-адрес изображения, я хочу загрузить изображение и сохранить его на локальном диске (дома / документы / изображение)

Я создаюмодель изображения и контроллер ..

нужна помощь, пожалуйста

в модели изображения

class Image < ApplicationRecord

    has_one_attached :image
    require 'open-uri'
    image = open('http://example.com/image.png')
    IO.copy_stream(image, '~/home/Documents/Images/local_image.png')

end

в контроллере изображения

class ImagesController < ApplicationController 

    def index
      @image = Image.new
    end

end

в изображении / индексе.html.erb

<%= form_for(@image, url: images_path) do |f| %>
  <%= f.text_field :image_url %>
  <%=f.submit%>
<% end %>

но с ошибкой

OpenURI::HTTPError in ImagesController#index 404 not found

1 Ответ

0 голосов
/ 21 января 2019

Попробуйте с этим

ImagesController

require 'open-uri'

def get_image_url
end

def download_image
  read_image = open(params[:image_url]).read
  File.open('/home/documents/image/image.png', 'wb') do |file|
    file.write read_image
  end
  redirect_to root_path
end

Создайте новый файл в вашем представлении изображений get_image_url.html.erb

<%= form_tag("/images/download_image", method: "post") do  %>
  <%= label_tag :image_url %>
  <%= text_field_tag :image_url %>
  <%= submit_tag 'Download' %>
<% end %>

routes.rb

post 'images/download_image'
get 'images/get_image_url'

Примечание. Если вы хотите присвоить изображениям другое имя, создайте метод и передайте его по имени изображения и измените код (имя действия и файлы) в соответствии с вашими потребностями.

Edit: Чтобы получить текущий путь к папке

pwd

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...