0

我有一些问题允许用户下载文件,该文件存储在 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 附件。

我应该如何将此数据转换为字节以允许用户单独下载此文件?

4

1 回答 1

0

请参阅以下内容:http ://rubyforge.org/tracker/index.php?func=detail&aid=27845&group_id=234&atid=967

语法类似于 PGConn.unescape_bytea($field);

根据您的 pg 版本,您可能需要升级该 gem

于 2013-04-27T02:48:59.350 回答