0

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 のコードには触れていません。

4

2 に答える 2

2

ファイルをバイナリ モードで開くかどうかによって、Windows の動作が異なります。その行を次のように変更します。

b64 = [open(name, 'rb').read].pack('m')
于 2011-03-04T18:11:26.270 に答える
1

Linux の jruby 1.5.1 RVM と Linux の Ruby 1.8.7 で同じサイズになります。何らかの理由でパスのみをエンコードしていると思われます。印刷open(name).readしてみて、ファイルが開かれ、正常に読み取られることを確認してください。そうではないと思います。

jruby-1.5.1 :001 >  [open("test.jpg").read].pack('m').size
 => 3274 

ruby-1.8.7-p302 :003 > [open("test.jpg").read].pack('m').size
 => 3274 
于 2011-03-04T17:36:04.290 に答える