无法上传文件
我上传文件时遇到问题:
这是我的HTML:
'display:inline; margin-top:-10px' %> 'btn btn-sm btn-info' %>
首先我试着简单地上传它并在我的控制器中处理它,如下所示:
def import widgets = DBF::Table.new(params[:file], nil, 'cp1252') w = widgets.find(6) p = Patient.new p.vorname = w.vorname p.name = w.name p.geburtsdatum = w.geburt p.save respond_to do |format| format.html {redirect_to :back } end end
但这引发了一个错误:
no implicit conversion of ActionDispatch::Http::UploadedFile into String in line: DBF::Table.new(params[:file], nil, 'cp1252')
接下来我试着先生成一个Tempfile:
def import file = Tempfile.new(params[:file]) widgets = DBF::Table.new(file, nil, 'cp1252') w = widgets.find(6) p = Patient.new p.vorname = w.vorname p.name = w.name p.geburtsdatum = w.geburt p.save respond_to do |format| format.html {redirect_to :back } end end
但这也certificate是一个错误:
unexpected prefix_suffix: #<ActionDispatch::Http::UploadedFile:0x6793d10 @tempfile=# , @original_filename="patient.DBF", @content_type="application/octet-stream", @headers="Content-Disposition: form-data; name=\"file\"; filename=\"patient.DBF\"\r\nContent-Type: application/octet-stream\r\n"> in line: file = Tempfile.new(params[:file])
我错了什么? 感谢,并有一个愉快的一天!
访问params[:file]
是一个ActionDispatch::Http::UploadedFile
,它只是用于存储上传内容的TmpFile的包装器。
您需要从该IO read
类似对象以获取内容。
试试DBF::Table.new(params[:file].path, nil, 'cp1252')