(J)Ruby:使用 Jruby 或 Ruby 的 [].pack('m') 的不同结果
我想将 jpeg 图像编码为 base64。 谷歌搜索,我有这样的代码:
name = 'path_to_file'
b64 = [open(name).read].pack('m')
puts b64.size
如果这个代码用Jruby1.5.1(带有netbeans)执行,则大小的结果(与我的图像)为3518,但如果用ruby 1.8.7执行,则大小为90。 传递到 html 文件时,只有使用 JRuby 编码的文件才有效。
有人知道这是什么原因吗? 提前致谢。 注意:在Windows中运行,我还没有接触过ruby1.8.7代码。
I want to encode a jpeg image to base64.
Googling, i have this code:
name = 'path_to_file'
b64 = [open(name).read].pack('m')
puts b64.size
If this code its executed with Jruby1.5.1 (come with netbeans), the result of the size(with my image) its 3518, but if its executed with ruby 1.8.7, the size its 90.
Passing to an html file, only the encoded with JRuby works.
Someone know the reason of this?
Thanks in advance.
Notes: Running in Windows, and i hasn't touched the ruby1.8.7 code.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
根据您是否以二进制模式打开文件,Windows 会有不同的行为;将该行更改为:
Windows has different behaviour depending upon whether you open the file in binary mode or not; change that line to:
我在 Linux 上的 jruby 1.5.1 RVM 和 Linux 上的 Ruby 1.8.7 中得到相同的大小。我怀疑您只是出于某种原因对路径进行编码。尝试打印
open(name).read
并确保您的文件已成功打开和读取。我不认为是这样。I am getting the same sizes in jruby 1.5.1 RVM on Linux and Ruby 1.8.7 on Linux. I suspect that you are only encoding the path for some reason. Try printing
open(name).read
and assure your file is being opened and read successfully. I do not think that it is.