如何在Ruby on Rails中获取所选文件的完整path?

我在我的视图中放置了一个file_field

 <% form_for(:uploaded_file, @feed, :url => {:action=>'copy'}, :html=> {:multipart=>true}) do |f| %> <%= f.file_field :uploaded_file %> <br> <%= f.submit "Submit" %> <% end %> 

我有一个在我的控制器读取Excel文件的方法:

 def copy file = "" book = Spreadsheet.open 'excel_file' table = book.worksheet 'excel_sheet' table.each do |row| file << row end end 

logging请求

 "authenticity_token"=>"BbQRomTLhiF2O54/G6eHwnnaWbLttUSvo31FO3ZtKoA=", "uploaded_file"=>{"uploaded_file"=>#<ActionDispatch::Http::UploadedFile: 0x27b7ab‌​0 @original_filename="test.xlsx",@content_type="application /vnd.openxmlformats-officedocument.spreadsheetml.sheet", @headers= "Content-Disposition: form-data; name=\"uploaded_file[uploaded_file]\"; filename=\"volumetrie.xlsx\"\r\nContent-Type: application/vnd.openxmlformats officedocument.spreadsheetml.sheet\r\n", @tempfile=#<File:C:/DOCUME~1/me/ LOCALS~1/Temp/RackMultipart20110714-524-fy6vu>>}, "commit"=>"Submit"} 

我只是想获得我选定的文件的path插入到我的Spreadsheet.open方法。 错误信息是:没有这样的文件或目录。

我想使用我在视图中的file_field中select的文件的path,而不是'excel_file' ,这是我的Excel文件的path。 我怎样才能使用这个参数?

谢谢 !

在现代浏览器中,您无法从窗体获取文件path。 你只能用tempfile工作应该可以用params[ :uploaded_file ][ :tempfile ]

编辑试试

 file = Spreadshet::Excel.new('params[ :uploaded_file ][ :filename ]', 'w+') file.write( params[ :uploaded_file ][ :tempfile ].read ) 

File.absolute_path(文件)

Ruby Doc