我正在尝试下载图像并将其显示在rails中的视图中。
我想下载它的原因是因为网址包含一些我不太喜欢赠送的api-key。
我迄今为止尝试的解决方案如下:
#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
正在开发中,我会获得图片的这个网址:localhost:3000/var/folders/18/94qgts592sq_yq45fnthpzxh0000gn/T/imageprependname20130827-97433-10esqxh.png
该图片链接并未指向任何有用的内容。
我对可能出错的理论是:
我目前不知道有任何方法可以解决这些问题。有什么帮助吗?
顺便说一句:我在显示之后不需要存储图片,因为它会不断地从源头改变。
答案 0 :(得分:2)
我可以想到两个选择:
首先,将图像直接嵌入HTML文档中,参见 http://www.techerator.com/2011/12/how-to-embed-images-directly-into-your-html/ http://webcodertools.com/imagetobase64converter
其次,在HTML文档中,像往常一样编写图像标记:
<img src="/remote_images/show/whatever.png" alt="whatever" />
然后创建一个RemoteImages
控制器来处理图像请求。在动作show
中,图片将被下载并随send_data一起返回。
您不必使用这两个选项管理临时文件。
答案 1 :(得分:0)
您可以将文件保存在rails应用程序的公用文件夹中的任何位置。正确的路径类似于此#{Rails.root}/public/myimages/<image_name>.png
,然后您可以使用类似此http://localhost:3000/myimages/<image_name>.png
的网址引用它。希望这会有所帮助。