我正在使用
ruby 1.9.2以及Rails 3.1.4和Paperclip 2.4.5.
我的问题是尝试从URI保存回形针附件丢失文件扩展名,并保存文件而不会导致需要扩展的fancybox等问题.
一些示例代码:
uri = "http://featherfiles.aviary.com/2012-06-13/bbe5f0de1/0c5a672b88ea47ecb4631ac173e27430.png" open(uri) #=> #<File:/var/folders/zc/d69gxhzx10x_bvjrkqgyjgxr0000gn/T/open-uri20120613-27204-i6cldv>
有人遇到这个问题吗?我已经看到关于使用回形针存储来自URI的图像的多个答案,但是似乎没有解决我们正在运行的同样的问题
解决方法
不要使用临时文件!它作为一个占位符,因为该文件是从端口读取的,应被视为OpenURI的私有资源.相反,使用open(url).read并通过保存来处理结果内容.
做一些像:
require 'uri' require 'open-uri' url = 'http://www.iana.org/domains/example/index.html' filename = File.basename(URI.parse(url).path) File.open(filename,'wb') do |fo| fo.write(open(url).read) end
在操作期间暂时假脱机到磁盘,特别是网络操作是常见的.一旦文件的内容已经累积起来,就可以将其传递给应用程序.读取阻塞,所以你的代码将停止在那里,直到文件被返回给你.然后你可以玩它.