如何从URL下载文件并将其保存在Rails中?

我有一个我想要在本地保存的图像的URL,以便我可以使用Paperclip为我的应用程序生成缩略图。 下载和保存图像的最佳方式是什么? (我看着ruby文件处理,但没有遇到任何东西。)

尝试这个:

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]}") 

如果您正在使用PaperClip,现在可以自动处理从URL下载。

假设你有这样的东西:

 class MyModel < ActiveRecord::Base has_attached_file :image, ... end 

在你的模型上,只需要将图像指定为一个URL,就像这样(用深思熟虑的手写的):

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

你可能想把它放在你的模型中的一个方法中。 Heroku的临时文件系统也能正常工作。

回形针将从那里采取。

来源: 回形针文件

检查标准库中的Net :: HTTP 。 该文档提供了几个关于如何使用HTTP下载文档的例子。

我认为这是最明确的方式:

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