我不能使用ActiveStorage存储base64文件,我从我的客户端收到了一个base64字符串
params["image"] = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAREAAABMCAYAAABK84MTAAAABHNCSVQICAgIfAhkl0RVh"
当我尝试附加它时,我得到了:
ActiveSupport::MessageVerifier::InvalidSignature(ActiveSupport::MessageVerifier::InvalidSignature):
我看了很多教程,先试着解码:
decoded_image = Base64.decode64(params["image"])
post.image.attach(decoded_image)
并使用以下命令从字符串中删除数据:image/png;base64:
decoded_image = Base64.decode64(params["image"]['data:image/png;base64,'.length .. -1])
然后,当我使用以下命令直接从文件中附加图像时,该操作没有成功:
file = open("image.png")
post.image.attach(io: file, filename: "post.png")
它工作得很好,所以我认为我的错误是在字符串的解析过程中
发布于 2020-05-20 22:20:35
我不确定它是否可以工作,但可以尝试一下使用Tempfile
创建临时文件的方法
encoded_image = params["image"]['data:image/png;base64,'.length .. -1]
decoded_image = Base64.decode64(encoded_image)
file = Tempfile.new
file.binmode
file.write(decoded_image)
file.rewind
post.image.attach(
io: file,
filename: "post.png" # The name of the file should be received from paramaters, as well
)
file.close
file.unlink
https://stackoverflow.com/questions/61919234
复制相似问题