BLOB値の取り出し方がわからない。
ActiveRecordを使ってバイナリデータをDBに格納したり取り出したりする実験をしたが、格納は簡単にできたけど取り出しの方法がわからない。以下の手順で操作を行ったが取り出したファイルと格納したファイルのサイズが明らかに違っている。
テーブルのレイアウト
+-----------+--------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +-----------+--------------+------+-----+---------+----------------+ | id | int(11) | NO | PRI | NULL | auto_increment | | file_name | varchar(255) | YES | | NULL | | | bin | longblob | YES | | NULL | | +-----------+--------------+------+-----+---------+----------------+
格納(ファイル→DB)
bin = Binary.new() bin.file_name = "samplebin.zip" open("samplebin.zip"){|file| bin.bin = file.read } bin.save
取り出し(DB→ファイル。正常にファイルに書き込まれない)
bin = Binary.find(3) open("samplebin_out.zip","wb"){|file| file.binmode file.write(bin.bin) }
blob型の値は文字列として戻ってくるので、これをバイナリに変換してファイルに書き込む必要があるということか?
それともそもそもちゃんとDBに格納されてないのか?