如何从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