加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

Ruby打开返回一个字符串而不是一个文件?

发布时间:2020-12-17 01:49:38 所属栏目:百科 来源:网络整理
导读:当尝试打开()远程图像时,一些返回StringIO而其他人返回为File …如何强制文件? data = open("http://graph.facebook.com/61700024/picture?type=square")= #StringIO:0x007fd09b013948data = open("http://28.media.tumblr.com/avatar_7ef57cb42cb0_64.png"
当尝试打开()远程图像时,一些返回StringIO而其他人返回为File …如何强制文件?

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>

我正在使用Paperclip来保存远程图像(存储在S3中),所以基本上想做:

user = User.new
user.avatar = open(url)
user.save

解决方法

Open-URI对StringIO对象有10KB的限制,高于该值并将其存储为临时文件.

实现此目的的一种方法是实际更改Open-URI对StringIO对象限制所采用的常量.您可以通过将常量设置为0来完成此操作;

OpenURI::Buffer.send :remove_const,'StringMax' if OpenURI::Buffer.const_defined?('StringMax')
OpenURI::Buffer.const_set 'StringMax',0

将它添加到您的初始化程序中,您应该很高兴.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读