Paperclip可以直接通过URL获取图片。

9

是否可以使用PaperClip通过URL获取图像?使用fleximage是可能的,但由于fleximage不支持Rails3,因此我已切换到paperclip。

目前,我通过curl获取图像,将其保存在硬盘上,并通过paperclip的image_file加载它。

我在谷歌上没有找到真正的解决方案,希望您能帮助我。


你使用“fetch”来表示“上传”。如果你明确表示你的意思是“上传”,而不是“下载”,那么问题会更清晰。一些答案假设你在询问如何下载。 - Isaac Betesh
2个回答

12

是的,这是可能的,并且非常简单。

在你的模型中:

#we use this to get the image.
require 'rest-open-uri'
Class Model << ActiveRecord::Base
has_attached_file :picture

#Get the picture from a given url.
def picture_from_url(url)
    self.picture = open(url)
end

然后你可以像这样做:

#controller
@model.picture_from_url(<Your URL here>)

因为我们将图片与对象的其余部分一起保存了,所以您可以在视图中直接使用它:

<%= image_tag @model.picture.url %>

希望这可以帮到你!


但是,是否也可以从给定的URL下载图片,以在自己的服务器上拥有独立的文件? - lukaszkups
这将在您自己的服务器上创建一个独立的文件。与多部分表单唯一的区别在于数据流来自另一个源(例如,在此情况下为URL)。Paperclip的后处理器将启动并调整大小并保存图像。 - Daniël Zwijnenburg

1

<modelname>.<attachmentname>.url 方法不能满足您的需求吗?

换句话说,如果您的模型名为 Foo,并将其设置为 has_attached_file :bar,那么 foo.bar.url 应该会给出您的图像的 URL,您可以将其放入 image_taglink_to 中或者任何您想要的地方。

如果这不是您要找的,请问您能否澄清一下您的意思?


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接