Rails从上传的文件中读取base64字符串,而不保存文件

时间:2019-02-26 18:31:25

标签: ruby-on-rails encoding file-io request base64

对于我的Ruby on Rails项目,我有一个允许用户上传文件(例如,图像的jpg文件)的表单。我不想将该图像另存为应用程序中的任何文件。我想提取上传图像的base64字符串。

对于我拥有的表格(我正在使用Slim)

 = form_tag somepath, method: :post, remote: true do
   .form-group
        = label_tag :file
        = file_field_tag :file

然后在我拥有的控制器中

def allowed_params
  params.permit([:file])
end

但是,在使用用户界面上传文件File.open(allowed_params[:file], 'rb'){|f| f.read}后执行photo.jpg时,出现错误Errno::ENOENT Exception: No such file or directory @ rb_sysopen - C:\fakepath\photo.jpg

我尝试了Base64.encode64(File.open('someotherfile.jpg').read),其中someotherfile.jpg是一个文件,我知道它在哪里并且有效,并且运行良好。

有什么建议吗?提前致谢。

1 个答案:

答案 0 :(得分:1)

可以确定您使用的是多部分表格吗?您可以通过在multipart: true助手(例如form_tag)中设置form_tag somepath, method: :post, remote: true, multipart: true来实现。然后,您应该能够通过allowed_params[:file].read访问控制器中的内容。