0

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 添付ファイルが含まれます。

このデータをバイトに変換して、ユーザーがこのファイルを個別にダウンロードできるようにするにはどうすればよいですか?

4

1 に答える 1