我有一些问题允许用户下载文件,该文件存储在 PostgreSQL 字节转义字段(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 附件。
我应该如何将此数据转换为字节以允许用户单独下载此文件?