PostgreSQL bytea エスケープ フィールド ( http://www.postgresql.org/docs/current/interactive/datatype-binary.html )に保存されているファイルをユーザーがダウンロードできるようにするために、いくつかの問題があります。
1.9.3p385 :023 > data = PG::Connection.unescape_bytea(m[:data])
=> "JVBERi0xLjMKJcTl8uXrp/Og0MTGCjQgMCBvYmoKPDwgL0xlbmd0aCA1IDAg\r\nUiAvRmlsdGVyIC9GbGF0ZURlY29kZSA+Pgpzd..."
1.9.3p385 :023 > data.encoding.name
=> "ASCII-8BIT"
1.9.3p385 :023 > data.bytesize
=> 3878164
しかし、「send_data」または「send_file」をtempfileで使用すると、無効な形式のファイル(これはpdfファイルです)を取得しました。元のサイズよりもはるかに大きく、pdf リーダーで開くことはできません。
このフィールドのデータは、電子メールの MIME 部分です。このすべての部分から生の電子メールを作成すると (区切りとして境界を使用)、この電子メールには有効な pdf 添付ファイルが含まれます。
このデータをバイトに変換して、ユーザーがこのファイルを個別にダウンロードできるようにするにはどうすればよいですか?