我有一个图像的URL,我想保存在本地,这样我就可以使用回形针为我的应用程序产生一个缩略图。下载和保存图像的最佳方法是什么?(我研究了ruby文件处理,但没有发现任何东西。)


当前回答

以上所有的例子都很棒。 在我的情况下,我只是想从图像从URL创建一个下载链接。

如果你想让它可下载(到你的下载文件夹),你可以在你的控制器中使用以下代码:

require 'open-uri'
file_type = url.to_s.split(".")[-1]

send_data open(url).read, filename: "some_name.#{file_type}", type: "image/#{file_type}", disposition: "attachment"

其他回答

以上所有的例子都很棒。 在我的情况下,我只是想从图像从URL创建一个下载链接。

如果你想让它可下载(到你的下载文件夹),你可以在你的控制器中使用以下代码:

require 'open-uri'
file_type = url.to_s.split(".")[-1]

send_data open(url).read, filename: "some_name.#{file_type}", type: "image/#{file_type}", disposition: "attachment"

试试这个:

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

一个更短的版本:

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

保持相同的文件名:

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

我认为这是最清晰的方式:

require 'open-uri'

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

可能是最简单的方法:

require 'open-uri'
image_url = "https://i.imgur.com/ZWnhY9T.png"
IO.copy_stream(URI.open(image_url), 'destination.png')