从回形针 2 升级到回形针 3 时,我的图像上传 API 停止运行。此代码曾经有效:
def decode_cover_image_data(cover_image_data)
data = StringIO.new(Base64.decode64(cover_image_data))
data.class.class_eval { attr_accessor :original_filename, :content_type }
data.original_filename = "cover.png"
data.content_type = "image/png"
self.photo = data
end
它现在引发 NoHandleError 异常:
“Paperclip::AdapterRegistry::NoHandlerError(找不到处理程序 “/9j/4AAQD/4Q[...]wooooGf/9k=”
有人遇到这个问题吗?
我找到了问题出在哪里,这很愚蠢......
在我的控制器更新方法中,我有类似的内容:
def update
...
if p[:photo]
@user_ipad.decode_cover_image_data(p[:photo])
end
unless @user_ipad.update_attributes(p)
render :json => {:errors => @user_ipad.errors}
end
end
问题是我设置了用户照片两次:
使用update_attributes保存base64字符串(仍在参数中)时发生崩溃。实际上让我惊讶的是这段代码可以与 Paperclip 2.4.5 一起使用...
升级到 Paperclip 3.3.1 后,我通过用此替换更新方法解决了我的问题:
def update
...
if p[:photo]
p[:photo] = @user_ipad.decode_cover_image_data(p[:photo])
end
unless @user_ipad.update_attributes(p)
render :json => {:errors => @user_ipad.errors}
end
end