如何使用Rails中的URL从URL下载图像并将其保存到本地磁盘(计算机)?

时间:2019-01-21 07:08:27

标签: ruby-on-rails ruby

我有一个添加图片网址form的表格, 如果用户添加图像URL,我想下载图像并保存到本地磁盘(home / documents / image)

我创建图像模型和控制器。

需要帮助

在图像模型中

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

在image / index.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 :(得分:1)

尝试一下

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'
  

注意:如果要给图像命名不同,请创建一个方法并将其传递给图像名称,然后根据需要修改代码(动作名称和文件)。

编辑: 获取当前文件夹路径

pwd