我有一些问题允许用户下载文件,该文件存储在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附件。
如何将此数据转换为字节以允许用户单独下载此文件?
答案 0 :(得分:0)
请参阅以下内容:http://rubyforge.org/tracker/index.php?func=detail&aid=27845&group_id=234&atid=967
语法类似于PGConn.unescape_bytea($ field);
根据您的pg版本,您可能需要升级该gem