编码为Base64的字符串转换为文件(Ruby on Rails) - 未定义方法“unpack”错误

5

在我的一个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变量时,您会得到什么输出? - sarnold
2个回答

2

看起来你想把哈希传递到decode方法中。你确定不应该这样做@base64 = params[:character][:base64]


0

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接