【问题标题】:Download file from PostgreSQL bytea escape从 PostgreSQL bytea escape 下载文件
【发布时间】:2013-02-16 10:31:50
【问题描述】:

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

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

【问题讨论】:

    标签: ruby-on-rails ruby ruby-on-rails-3 postgresql encoding


    【解决方案1】:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-06-29
      • 1970-01-01
      • 2011-10-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-01-11
      相关资源
      最近更新 更多