ruby-on-rails - 在 Ruby on Rails 中,如何将 Base64 编码的字符串设置为 pdf 附件?

标签 ruby-on-rails ruby-on-rails-5

我有一个 Base64 编码的 PDF 数据,想使用 ActionMailer 将其设置为邮件的附件。

我尝试过如下(假设 Base64 编码的 pdf 数据在 base64_encoded_string 中):

attachments['attachment.pdf'] = {
  mime_type: 'application/pdf',
  encoding: 'base64',
  content: base64_encoded_string
}

但是当我在收到的电子邮件上打开附加的 pdf 文件时,该文件已损坏。

现在我提前解码了一个 Base64 字符串,让 ActionMailer 对 Base64 进行编码,它的工作没有任何问题。
attachments[File.basename('attachment.pdf')] = Base64.decode64(base64_encoded_string)

如何将 Base64 编码的字符串直接设置为 pdf 附件?

最佳答案

似乎我找到了解决方案。如果您提供 base64 字符串作为内容,请确保指定编码。否则 Rails 将第二次编码已经编码的字符串。

attachments['base64_file.pdf'] = {
  mime_type: 'application/pdf',
  encoding: 'base64',
  content: base64_string
}

关于ruby-on-rails - 在 Ruby on Rails 中,如何将 Base64 编码的字符串设置为 pdf 附件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37451025/

相关文章:

ruby-on-rails - 如果没有关联,RoR 允许删除

ruby-on-rails - 在生成事件记录模型时设置列的默认值

ruby-on-rails - 如何在 Rails 的 haml 中编写数据分数属性?

ruby-on-rails - "TypeError: can' t 引用“使用自定义类型和属性 API 时

mysql - 无法找出在 Rails 5 中使用 has_many_through 关系显示连接数据的最佳方式

ruby-on-rails - 验证错误消息未显示在表单 View 中

javascript - 为什么我们必须在 rails 中要求 application.js 中的 JS 文件?

ruby-on-rails - has_many在Rails中进行关联迁移

ruby-on-rails - Ruby 1.8.7 对比 Ruby 1.9+ 性能

ruby-on-rails - rails4 - Psych::BadAlias:未知别名:test