0

我正在使用Cloudmailin服务让用户从移动设备上传个人资料图片。Cloudmailin 将以 HTTP POST 的形式将电子邮件转发到我们的站点。他们有四种方法来格式化帖子。我正在使用Multipart/form-data 哈希电子邮件消息格式,因为我认为获取附件数据会更容易。在我的控制器中,我有以下内容:

require 'mail'
skip_before_filter :verify_authenticity_token

def create
  ...
      attachment = params[:attachments].first
      file = StringIO.new(attachment.decoded)
  ...
end

错误信息:

NoMethodError (undefined method `decoded' for #<Array:0xb5060c24>)

我想我可能会尝试使用 mms2r 但在尝试安装我得到的 gem:

"Error installing mms2r: ERROR: Failed to build gem native extension."

与其解决 mms2r 问题,我宁愿在没有它的情况下解决它。

谢谢你的帮助。

4

1 回答 1

1

传递的附件是一个以 0 开头的散列。您需要使用类似的东西遍历每个附件

params[:attachments].each do |key,value|
  # do something with value
  logger.info value.inspect
end

这应该可以让您访问临时文件。在多部分格式的情况下,没有 base64 编码。附件按原样发送,并可通过文件访问,因为机架将提取多部分文件。

于 2012-06-13T23:00:05.730 回答