如何连接code媒体以base64在Ruby中给定的URL [英] How to encode media in base64 given URL in Ruby
本文介绍了如何连接code媒体以base64在Ruby中给定的URL的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我想上传图片到PingFM。他们文档说:
媒体 - 的base64 EN codeD介质的数据。
我可以通过URL访问这一形象。我试过(实际是猜的)这样的:
的ActiveSupport :: Base64.en code64(开放(http://image.com/img.jpg))
但我得到这个错误:
类型错误:不能将它视为档案转换成String
从/usr/lib/ruby/1.8/base64.rb:97:in'包'
从/usr/lib/ruby/1.8/base64.rb:97:in恩`code64
从(IRB):19
来自:0
解决方案
的打开
方法:
打开(http://image.com/img.jpg)
返回一个将它视为对象,而连接code64
需要一个字符串。
调用读
的临时文件应该做的伎俩:
的ActiveSupport :: Base64.en code64(开放(http://image.com/img.jpg){| IO | io.read})
I'm trying to upload an image to PingFM. Their documentation says:
media – base64 encoded media data.
I can access this image via the URL. I tried (practically guessed) this:
ActiveSupport::Base64.encode64(open("http://image.com/img.jpg"))
But I get this error:
TypeError: can't convert Tempfile into String
from /usr/lib/ruby/1.8/base64.rb:97:in `pack'
from /usr/lib/ruby/1.8/base64.rb:97:in `encode64'
from (irb):19
from :0
解决方案
The open
method:
open("http://image.com/img.jpg")
is returning a Tempfile object, while encode64
expects a String.
Calling read
on the tempfile should do the trick:
ActiveSupport::Base64.encode64(open("http://image.com/img.jpg") { |io| io.read })
这篇关于如何连接code媒体以base64在Ruby中给定的URL的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文