Base64 编码的字符串到文件(Ruby on Rails) - 未定义的方法“解包”错误

Posted

技术标签:

【中文标题】Base64 编码的字符串到文件(Ruby on Rails) - 未定义的方法“解包”错误【英文标题】:Base64 encoded string to file (Ruby on Rails) - undefined method `unpack' Error 【发布时间】:2012-05-30 00:04:34 【问题描述】:

在我的一个 Rails 控制器中,我尝试获取 Base64 编码的字符串,对其进行解码并将其写入文件 (.png)。这是我的代码:

def create_character
    @character = Character.new(params[:character])
    @base64 = params[:base64]
    File.open("app/assets/images/characters/#@character.name.gsub(/\s+/, "")-#@character.author_name.gsub(/\s+/, "").png", 'wb') do |f|
        f.write(Base64.decode64(@base64))
    end

    if @character.save
        flash[:notice] = "Character created."
        redirect_to(:action => 'share')
    else

我收到以下错误:

undefined method `unpack' for #<ActiveSupport::HashWithIndifferentAccess:0x1044b22d8>

这里出了什么问题?

编辑:一件非常奇怪的事情是,编写文件的代码在 Rails 控制台中运行良好,但在运行应用程序时却不行。

【问题讨论】:

当您记录或打印@base64 变量时会得到什么输出? 【参考方案1】:

您似乎正在尝试将哈希传递给 decode 方法。你确定你不应该这样做@base64 = params[:character][:base64]吗?

【讨论】:

【参考方案2】:

当我将数据类型从字符串修改为文本时出现unpack 错误。

【讨论】:

以上是关于Base64 编码的字符串到文件(Ruby on Rails) - 未定义的方法“解包”错误的主要内容,如果未能解决你的问题,请参考以下文章

Ruby on rails将base64保存为xlsx(或pdf或word)并使用paperclip保存

使用 Ruby 即时编码 Base64

来自GrayScale的Ruby + RMagick + base64图像+ RGB转换不起作用

Base64编码及iOS中的Base64

如何使用 PHP 从 base64 编码的数据/字符串创建图像并将其保存到网站文件夹

base64解码文件不等于原始未编码文件