當試圖open()
遠程圖像,一些返回爲StringIO
和其他返回爲File
...我如何強制File
?Ruby打開返回字符串而不是文件?
data = open("http://graph.facebook.com/61700024/picture?type=square")
=> #<StringIO:0x007fd09b013948>
data = open("http://28.media.tumblr.com/avatar_7ef57cb42cb0_64.png")
=> #<StringIO:0x007fd098bf9490>
data = open("http://25.media.tumblr.com/avatar_279ec8ee3427_64.png")
=> #<File:/var/folders/_z/bb18gdw52ns0x5r8z9f2ncj40000gn/T/open-uri20120229-9190-mn52fu>
我使用回形針保存遠程圖像(其被存儲在S3),所以基本上想要做:
user = User.new
user.avatar = open(url)
user.save
的問題是:爲什麼你需要嗎?你想強制將這些圖像寫入臨時文件嗎?您可以輕鬆地自己做到這一點,並更好地控制它們的存儲位置和刪除時間。 – 2012-02-29 15:23:25
@NiklasB。只是更新了一些附加信息的帖子。 – Shpigford 2012-02-29 15:30:39
該代碼有什麼問題?它會給出任何錯誤嗎? Paperclip應該能夠處理任何類型的流,可能問題在於它無法找到圖像的基本名稱(通過向'StringIO'對象添加單例方法可以解決這個問題)。 – 2012-02-29 15:52:34