2013-08-13 21 views
16

私は、のURLから画像を読み込み、後で処理するためにTempfileに保存することを試みています。テンポファイルに文字列を書き込む

require 'open-uri' 

url = 'http://upload.wikimedia.org/wikipedia/commons/8/89/Robie_House.jpg' 
file = Tempfile.new(['temp','.jpg']) 
stringIo = open(url) 
# this is part I am confused about how to save StringIO to temp file? 
file.write stringIo 

これはそれがtemp.jpgが有効なイメージではありません結果としてされて動作しません。これをどのように進めるかわかりません。

おかげ

答えて

29

あなたはスーパーの近くだ:

file.binmode 
file.write stringIo.read 

open(url)だけ読み込み用のストリームを開いています。 .readを呼び出してからfile.writeに渡すまで、実際にデータを読み取るわけではありません。

ます。また、そうのように、正しいエンコーディングを使用して一時ファイルを作成することができ
+3

ありがとう、スーパークローズheheが大好きです。誰かが似たような問題を抱えている場合に備えて 'file.binmode'も見つからなかった。 –

+1

file.binmodeのthnx! – Zippie

3

ファイル= Tempfile.new([ 'TEMP'、 'JPG。']、:エンコーディング=> 'ASCII-8ビット' )

これは、ファイルをbinmodeに設定するのと同じです。

関連する問題