夕暮ログ

C#やJavascript、最近はAndroidなんかも好きなtinqのブログ。「夕暮れログ」

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

Rubyでバイナリデータを標準出力に出力する

Same-Originポリシーを回避するためにRubyでCGIを作っていたのですが、ほかのサーバーの画像を書き出すのでつまりそうになったのでメモ。

画像なのでもちろんバイナリモードで書き出さないといけません。
しかし、標準出力はテキストモードで開かれているため普通に書き出すと改行がおかしくなってしまいます。(windowsなら)

すでに開いているFileをバイナリモードにするにはIO#binmodeを使うそうです。
開発規約/95 - BugbearR's Wiki
instance method IO#binmode
f = "file.jpg"
print "Content-Type: image/jpegn\n"
STDOUT.binmode
print open(f,"rb").read

もう一度テキストモードにするには再オープンしかないようですが、Rubyで標準出力を再オープンする方法はわかりません・・・

CGIでもっとまともな方法


で、さすがにこんなことはないだろうと思って探したらありました。
instance method CGI#out
一件落着。
cgi = CGI.new
f = "file.jpg"
cgi.out("image/jpeg" ){ open(f,"rb").read }
関連記事

コメント

承認待ちコメント

このコメントは管理者の承認待ちです

承認待ちコメント

このコメントは管理者の承認待ちです

承認待ちコメント

このコメントは管理者の承認待ちです

ここをクリックしてコメントを投稿

非公開コメント

トラックバック

http://tinqwill.blog59.fc2.com/tb.php/98-8b136158

ホーム  prev »

プロフィール

tinq tinq(もしくはTinqWill)

Sky  For   Every 改装予定

プログラミングお勉強中の高校生。月一くらいは更新したい

最新記事

カテゴリ

月別アーカイブ

検索フォーム

最新コメント

リンク

最新トラックバック

FC2Ad

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。