2

我正在尝试下载图像并将其显示在 rails 的视图中。

我之所以要下载它是因为网址包含一些我不太喜欢赠送的 api-keys。

到目前为止,我尝试过的解决方案如下:

#Model.rb file
def getUrlMethod
   someUrlToAPNGfile = "whatever.png"
   file = Tempfile.new(['imageprependname', '.png'], :encoding => "ascii-8bit")
   file.write(open(data).read)
   return "#{Rails.application.config.action_mailer.default_url_options[:host]}#{file.path}"
end
#This seems to be downloading the image just fine. However the url that is returned does not point to a legal place

在开发中,我得到了这张图片的 URL:localhost:3000/var/folders/18/94qgts592sq_yq45fnthpzxh0000gn/T/imageprependname20130827-97433-10esqxh.png

该图像链接没有指向任何有用的地方。

我对可能出错的理论是:

  1. 临时文件在用户请求之前被删除
  2. url指向错误的地方
  3. 该 url 不是路由文件中的合法路由

我目前不知道有任何方法可以解决其中任何一个问题。有什么帮助吗?


顺便说一句:我展示完图片后不需要存储它,因为它会从源头不断变化。

4

2 回答 2

2

我可以想到两个选择:

一、直接在HTML文档中嵌入图片,见 http://www.techerator.com/2011/12/how-to-embed-images-directly-into-your-html/ http://webcodertools.com/ imagetobase64转换器

其次,在 HTML 文档中,照常写图片标签:

<img src="/remote_images/show/whatever.png" alt="whatever" />

然后创建一个RemoteImages控制器来处理图像请求。在操作show中,图像将被下载并使用send_data返回。

您不必使用这两个选项来管理临时文件。

于 2013-08-28T00:25:11.937 回答
0

您可以将文件保存在 rails 应用程序的公共文件夹中的任何位置。正确的路径应该是这样的#{Rails.root}/public/myimages/<image_name>.png ,然后您可以使用这样的 URL 来引用它http://localhost:3000/myimages/<image_name>.png。希望这会有所帮助。

于 2013-08-28T00:19:32.023 回答