对于我的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
是一个文件,我知道它在哪里并且有效,并且运行良好。
有什么建议吗?提前致谢。
答案 0 :(得分:1)
可以确定您使用的是多部分表格吗?您可以通过在multipart: true
助手(例如form_tag
)中设置form_tag somepath, method: :post, remote: true, multipart: true
来实现。然后,您应该能够通过allowed_params[:file].read
访问控制器中的内容。